gdb常用命令

  1. 1.0如何使可执行程序变为可调试

    gcc -g -o test test.c        // -g 编译选项使test可执行程序拥有可调试属性

  2. 1.1如何启动gdb调试工具

    a.启动gdb但不调试可执行文件:gdb

      载入待调试文件:(gdb)file test

    b.启动gdb并调试可执行文件:gdb test

    c.其它启动方式暂不列举

  3. 1.2查看源程序代码

    list <line-num>  显示指定行前后的代码

    list <func>  显示函数代码

    list   显示当前行前后的代码

    list + 从当前行往后显示代码

    list - 从当前行往前显示代码

    list <first>,<last>  显示first行与last行之间的代码

    list ,<last> 显示当前行到last行之间的代码

    ------   ------   ------   ------   ------   ------   ------   ------   ------   ------

    扩展:

    set listsize <count> 设置一次list命令显示代码的行数,默认设置显示10行

    show listsize 查看当前设置listsize的值

  4. 1.3查看源代码的内存

    info line [行号][函数名][文件名:行号][文件名:函数名]

  5. 1.4查看单个数据(如果编译器优化将一些变量优化掉可能导致查看不到)

    print <expr>  //expr可是变量名,表达式

    print /<format> <expr>  //关于数据的显示格式暂且不讲

    使用gdb的print查看程序运行时的数据,每个print都会被gdb记录下来,以$1、$2、$3……的方式为每一print命令编号,后面可以直接使用这个编号访问以前的表达式,如print $2。这样避免的重复输入表达式。

    ------   ------   ------   ------   ------   ------   ------   ------   ------   ------

    p file::variable   查看文件作用于变量

    p function::variable  查看函数作用域变量

  6. 1.5修改变量的值

    print x=4   将x赋值为4并打印x的值

    set var width=47  将width的值设置为47

    ------   ------   ------   ------   ------   ------   ------   ------   ------   ------

    补充:查看变量的类型

    whatis varName  查看变量varName的类型

  7. 1.6查看连续内存空间的值

         1.6.1动态分配的连续内存

          int *array = (int*)malloc(…)

          print *array@len   注意是"*array"格式,len表示查看元素的个数

          1.6.2静态数组

          print 数组名

  8.  

    1.7自动显示的变量值的相关命令。已经设置后的变量,当每执行一个调试命令后会自动显示在调试界面中。

    display <expr>  设置要自动显示值的变量

    display /<fmt> <expr>  设置要自动显示的变量及数据的显示格式

    ------   ------   ------   ------   ------   ------   ------   ------   ------

    undisplay  display <dnum>  删除一个自动显示变量

    delete display <dnum> 删除一个自动显示变量

    undisplay/delete display <dnum1~dnum5> 删除一个范围内的自动变量

    ------   ------   ------   ------   ------   ------   ------   ------   ------

    disable/enable display <dnum> 禁用/启用一个自动显示变量

    ------   ------   ------   ------   ------   ------   ------   ------   ------

    9.

    info display 查看设置的自动显示变量

    ist(l):显示代码及其行数

    break(b) 行数:设置断点

    r:运行程序

    p 变量名:输出变量的值

    c:继续

    clear 行数:取消断点

    quit(q):退出gdb

    s:单步调试,并进入函数内部

    n:单步调试,不进入函数内部

    whatis 变量名:查看变量类型

    bt:查看堆栈信息

原文地址:https://www.cnblogs.com/linear/p/6814679.html