目录
一、程序的两种模式
二、gdb的常用调试命令
一、程序的两种模式
程序通常有两种模式,分别是debug模式和release模式
debug模式可以调试,但是release模式不支持调试,因为debug模式添加了调试信息,因此debug的程序大小比release大
gdb默认采用release模式生成程序,若要生成debug模式的程序需要加上 -g 选项
接下来编译源码分别生成可执行程序test_debug.exe 和 test_release.exe
debug的文件大小比release文件更大
从debug文件中可以读取到调试信息,从release文件中读取不到
二、gdb的常用调试命令
gdb debug文件:开始调试该debug文件
q/quit:退出调试
l/list:显示源代码(只显示十行,但是gdb会记住最近一次使用的命令,所以连续回车可以显示更多行代码)
l/list 函数名:查看对应函数的代码
l/list 数字n:查看第n行的代码
r/run:运行程序
b/break 函数名:给该函数入口处打上断点
b/break 数字n:在第n行打上断点
i/info b:查看所有断点
d 断点编号:删除该断点
disable 断点编号:禁用断点
enable 断点编号:启用断点
n/next:逐过程调试
s/step:逐语句调试
p/print 变量n:查看调试过程中变量n的值
display 变量n:常显示变量n的值
undisplay 变量n:取消变量n的常显示
c/continue:运行至下一断点处
finish:运行结束当前所在函数
until 数字n:跳转运行至当前所在函数指定行
i/info locals:查看当前栈帧局部变量的值
set var 变量n=?:修改调试过程中变量n的值
bt/breaktrace:查看各级函数调用及参数