使用gdb的前提条件是可执行文件必须包含调试信息即编译时有 gcc -g


1.启动gdb

    gdb app(可执行程序)


2.查看代码

    命令:l – list

    用法:

    l – 显示10行 / 函数名

    l filename:行号 / 函数名


3.断点

    ①设置当前文件断点

    命令: b – break

    用法:b 行号 / 函数名

    

    ②设置指定文件断点

    用法:b filename:行号/(函数名)


    ③设置条件断点

    用法格式:b 行号 if value == num


    ④删除断点

    命令:delete – del—d

    用法:d 断点的编号


    ⑤直接停在断点的位置

    命令:c – continue 


4.查看设置的断点

    命令:info – i

    用法:info b  


5.开始执行gdb 调试

    命令:start – 只执行一步


6.单步调试

    进入到函数体内部: s – step

    从函数体内部跳出: finish

    不进入函数体内部: n -- next

    退出当前循环: u


7.多步调试

    命令:r – run


8.查看变量的值

    命令:p – pinrt

    用法: p 变量名


9.设置变量的值

    用法:set var 变量名 = 赋值


10.查看变量的类型

    命令: ptype

    用法:ptype 变量


11.追踪变量

    设置追踪变量

    命令:display

    用法:display 变量名

    取消追踪变量

    命令:undisplay

    获取追踪变量编号:

    info display

    取消追踪变量用法:undisplay 编号


12.跟踪进程

    使用gdb调试的时候,gdb只能跟踪一个进程,可以在fork函数调用前,t通过指令设置gdb调试工具跟踪父进程或者子进程。默认跟踪父进程

    set follow-fork-mode child 命令设置gdb在fork之后跟踪子进程。

    set follow-fork-mode parent 设置跟踪父进程。

    

    注意: 一定要在fork函数调用前设置才有效


13.退出 gdb 调试

    quit