编译注意
程序要想使用 gdb 调试,编译时要加上 -g
传入参数
设置传入参数:set args
显示传入参数:show args
代码
查看代码:list 文件名:函数名或行号
设置查看代码行数:set listsize
断点
打断点:break 文件名:函数名或行号
删除断点:delete 端点编号
显示断点信息:info break
使断点无效:disable 断点编号
使断点有效:enable 断点编号
调试
程序停在第一行:start
运行直到断点:run
继续直到断点:continue
单步调试,不进入函数体:next
单步调试,进入函数体:step
跳出函数体:finish
打印变量值:print 变量名
打印变量类型:ptype 变量名
设置自动变量:display 变量名
查看自动变量:info display
取消自动变量:undisplay 编号
多进程调试
在 fork 函数调用之前通过指令 set follow-fork-mod parent/child 设置跟踪父进程还是子进程
set detach-on-fork on/off 默认为 on 表示调试当前进程时其他进程继续运行;若为 off 表示调试当前进程时其他进程被 gdb 挂起
查看调试的进程:info inferiors
切换当前调试的进程:inferior id
使进程脱离 gdb 调试:detach inferiors id