常用调试命令
backtrace(bt) | 查看堆栈 |
finish | 运行完当前函数 |
frame(f) 帧号 | 选择栈帧 |
info(i) locals | 查看当前栈帧局部变量值 |
list(l) 行号 | 列出源码 |
next(n) | 执行下一行 |
print(p) | 打印表达式的值 |
quit(q) | 退出gdb调试环境 |
set var | 修改变量的值 |
start | 执行程序,在main的第一行语句前停下 |
step(s) | 执行下一步(进入函数) |
kill | 终止正在调试的程序 |
break(b) 行号 | 断点 |
break 函数名 | 断点 |
break 文件名:行号 | 断点 |
continue(c) | 从当前位置开始继续执行 |
delete breakpoints 断点号 | 删除断点 |
display 变量名 | 跟踪某个变量 |
disable breakpoints 断点号 | 禁用断点 |
enable 断点号 | 启用断点 |
info(i) breakpoints | 查看断点 |
run(r) | 重新运行程序 |
undisplay 跟踪显示号 | 取消跟踪 |
watch | 设置观察点 |
info(i) watchpoints | 查看观察点 |
x | x/7b input//从input变量处打印7个存储单元的内容 |
shell cmd | 执行命令 |
set args | 设置参数 |
show args | 查看参数 |
show paths | 查看程序运行路径 |
set environment varname=val | 设置环境变量 |
show environment varname | 查看环境变量 |
cd | 切换目录 |
pwd | 查看当前目录 |
info program | 查看程序状态 |
clear 行号n | 清除第n行上的断点 |
help | 帮助 |
gdb启动方法
gdb <program>
gdb <program> core
gdb <program> <PID>
gdb调试core文件
查看是否支持dump core功能:
ulimit -c或ulimit -a
配置系统使其支持core生成:
ulimit -c unlimited
gdb查看core文件:
gdb exe mycore