GDB 学习笔记
简介
gdb 是 GNU 下的一个调试工具,相较于图形化界面有一些优势
使用
必须在编译时添加 -g
命令将调试信息添加到可执行文件中,如 gcc -g hello.c -o hello
启动:gdb programName
使用 help
查看所有命令
断点 BreakPoint
break
或 b
,所有命令通常只需要打出开头的几个字符就行了,在指定位置停下
- 函数:
b func
,func
为函数名 - 行号:
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