编译选项
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