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查看局部变量,简写ilcoals是局部变量,具体查看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 4enable 4启用断点。

可以根据条件设置断点,例:break 9 if sum != 0,虽然看上去很强大,但很少使用。

观察点

观察点watch,当程序访问到哪个存储单元时中断,例:watch input[5]

段错误

直接运行程序发生段错误没有提示,使用gdb遇到段错误会自动停下来,一条规律, 如果某个函数的局部变量发生访问越界,有可并不立即产生段错误,而是在函数返回时产生段错误。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap