Date Category linux Tags gdb

编译选项

CPPFLAGS=-DDEBUG CXXFLAGS="-g -O0"

生成可调式的可执行文件,-g 保存调试符号,-O0 不做编译器优化。

启动命令

进入调试窗口

gdb a.out

如果命令带有参数,可以通过

gdb --args a.out arg1 arg2

基本命令

run(r): 开始执行
break(b): 设置断点
next(n): 执行
step(s): 进入函数调用
continue(c): 继续执行
print(p): 打印变量内容
list(l): 列出当前代码位置的上下文
backtrace(bt):查看当前的调用堆栈
quit(q): 推出调试

设置断点

断点,每次程序执行到此位置则停止

break file:line

在文件的某行停止

break function_name

function_name函数处停止

条件断点的设置,在断点后面加上 if 判断语句

break file:line if i = 10

设置变量的观察点,每次变量改变则停止

watch variable

查看断点信息

info breakpoints

然后可以根据编号进行delete或者disable命令

查看可调试的文件

info sources

显示其他窗口信息

layout asm # 显示汇编
layout reg # 显示寄存器状态
Ctrl+x a 退出窗口试图

gdb core file

gdb 打开 corefile

gdb core.file run.binary