使用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
Comments