gdb基本命令

gcc -g main.c -o main

gcc -g编译选项在可执行文件中加入源代码信息,比如可执行文件中第几条机器指令对应源代码的第几行,配合源代码文件在gdb中进行调试.

命令 描述
start 开始执行程序
run(r) 从头运行程序
print(p) 打印表达式
display <变量名> 每次停止都跟踪查看
undisplay <变量名> 取消跟踪查看
next(n) 下一条语句
step(s) 下一条语句,如有函数调用则进入
set var 修改变量的值
backtrace(bt) 查看函数调用栈帧
finish 运行至跳出当前栈帧
frame(f) <帧编号> 选择栈帧
info(i) locals 查看选择栈帧的局部变量
list(l) <行号>/<函数名> 列出对应位置源代码
break(b) <行号>/<函数名> if 在对应位置设置断点或满足条件生效断点
continue(c) 运行到下个断点
delete breakpoints <断点号> 删除断点
disable breakpoints <断点号> 禁用断点
enable <断点号> 启用断点
info(i) breakpoints 查看设置的断点
watch 设置观察点
info(i) watchpoints 查看设置的观察点
x <地址> 从某个位置开始打印(eg:x/7b)

直接回车将使用上次使用的命令.

如果某个函数的局部变量发生访问越界,有可能并不立即产生段错误,而是在函数返回时产生段错误

参考资料

Linux C一站式编程