zoukankan      html  css  js  c++  java
  • LINUX

    【基本条件】

    编译时需要加--gcc -g选项;

    【基本命令】

    l 查看源码
    b 加断点
    r 开始运行调试
    n 下一步
    s下一步但是会进入子函数
    p 输出数据
    c跳过直到下一个断点处
    q表示程序退出

    help 查询指令,可以使用help来查看其他指令的用法,例如help print;同【man】

    shell 启动标准shell执行command,可以用exit退回gdb;

    print 打印指令,可以 p/x[十六进制]  p/d[有符号整形] p/u[无符号整形] p/o[八进制] p/t[二进制] p/a[作为一个地址] p/c[ascII码] p/f[浮点型] p/s[字符串] 

    examine 查看内存,与程序数据类型无关 简写为x

    disassemble 反汇编 disassemble/m main 把代码合反汇编放在一起看;

    info args 查看当前函数参数值
    info locals 看当前函数栈上值信息
    info registers 表示查看寄存器值
    info symbol 堆栈

    info thread 查看线程状态

    info breakpoint 查看断点信息

    ------------------------------------------------------自定义命令开始------------------------------------------------------

    def opso  //自定义一个操作,直到走到end

    bt //输出堆栈xinxi

    call test_show() //调用函数打印信息

    p/x g_name //查看变量

    finish //结束进程

    i r //查看寄存器

    Detach

    q

    end

    ------------------------------------------------------自定义命令结束,执行自定义命令开始------------------------------------------------------

    b test_break //打断点,当断点到此时,会执行以下command

    commond

    opso

    end

    ------------------------------------------------------执行自定义命令结束------------------------------------------------------


    b 17 if i == 8. 在17行设置一个断点,并且只有i==8的时候才会触发
    d 后面跟断点索引1,2,3..(每打一个断点,都会有相应索引号)
    clear 行数或名称. 删除哪一行断点. 看下面演示

    【解析core文件】

    ulimit -c unlimited
    echo "/tmp/core-%e-%p" > /proc/sys/kernel/core_pattern
    gcc -o main -g a.c
    gdb main /tmp/core-main-10815

    【数据断点】

  • 相关阅读:
    angular ng-bind-html异常Attempting to use an unsafe value in a safe context处理
    JS执行机制详解,定时器时间间隔的真正含义
    es6入门4--promise详解
    es6入门3--箭头函数与形参等属性的拓展
    JS判断滚动条到底部,页面是否有滚动条
    js forEach跳出循环
    es6入门2--对象解构赋值
    前端开发与日常好玩的的小工具,网站与插件分享
    详解 线程池
    详解 volatile关键字 与 CAS算法
  • 原文地址:https://www.cnblogs.com/wangqiwen-jer/p/10986878.html
Copyright © 2011-2022 走看看