gdb 调试器
gdb
是Linux下的一个强大的调试工具,它可以完全操控程序运行,具备设置断点、查看程序状态等功能。
常用命令 速查总结列表
单步执行和跟踪函数调用
gcc编译时使用-g选项插入调试信息。然后启动gdb:
gcc -g main.c -o main
gdb main
使用help
可以随时查看帮助。使用help running
等,可以进一步查看。
list
命令可以列出代码,list
可以简写成l
,什么都不敲直接回车执行上一次执行的指令,如果把.c
文件移走,列出源代码就不好使了。
quit
退出
start
开始执行程序
next
单步执行,简写n
step
进入函数,简写s
backtrace
查看函数调用栈,简写bt
info
查看局部变量,简写i
,lcoals
是局部变量,具体查看help即可
进入子函数查看主函数变量,使用frame
切换栈帧,简写f
打印变量值,$1
等是gdb保存的临时值
finish
,跳出函数
set var
,强行修改一个变量
断点调试
display
跟踪,每次都显示某个变量,undisplay
取消跟踪
break
,设置断点,简写b
,可以直接continue
到断点位置,continue
简写c
断点可以使用info breakpoints
查看,简写i b
断点的Num是编号,可以用例如delete breakpoints 4
来删除断点,例如disable breakpoints 4
临时禁用断点,简写disable 4
,enable 4
启用断点。
可以根据条件设置断点,例:break 9 if sum != 0
,虽然看上去很强大,但很少使用。
观察点
观察点watch,当程序访问到哪个存储单元时中断,例:watch input[5]
。
段错误
直接运行程序发生段错误没有提示,使用gdb遇到段错误会自动停下来,一条规律, 如果某个函数的局部变量发生访问越界,有可并不立即产生段错误,而是在函数返回时产生段错误。
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。