简介

gdb 是 GNU 下的一个调试工具,相较于图形化界面有一些优势

使用

必须在编译时添加 -g 命令将调试信息添加到可执行文件中,如 gcc -g hello.c -o hello

启动:gdb programName

使用 help 查看所有命令

断点 BreakPoint

breakb,所有命令通常只需要打出开头的几个字符就行了,在指定位置停下

  • 函数:b funcfunc 为函数名
  • 行号:break lineNum
  • 内存地址:break *address

查看断点:info breakpoints,简写为 i b

观察点 WatchPoint

如果某个变量表达式值变化了,则停下程序

  • watch expr:当 expr 改变时,停下

  • rwatch expr:若 expr 被读时,停止程序

  • awatch expr:当 expr 被读写时,停住

  • info watchpoints:查看观测点信息

清理停止点:

  • clear:清理所有已定义的停止点
  • clear func:清理指定函数中的所有停止点
  • clear lineNum:清理指定行号上的所有停止点

删除停止点:delete 断点号

也可以使用 disable 禁用某断点,再使用 enable 启用

恢复程序运行与单步调试

恢复程序运行直到结束或下一个断点到来:continue [忽略断点数],可以简写为 c

step 能进入函数,next 一条条执行语句

查看运行时数据

print /f exp/f 指输出的格式

查看内存

x /nfu addr,其中 n 表示显示内存的长度,f 表示显示的格式,u 表示请求的字节数

自动显示

display exp:当程序停止或单步运行时,指定的表达式值会自动显示

修改变量值

set (varName = value) 将变量名为 valName 的变量的值设置为 value