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) |
直接回车将使用上次使用的命令.
如果某个函数的局部变量发生访问越界,有可能并不立即产生段错误,而是在函数返回时产生段错误