gdb:C和C++程序的强力调试器,是调试用户态时常用的调试手段之一。以下是调试时常用的指令。
- 加载程序,启动gdb
gdb -args <程序+参数>`在这里插入代码片`
- 运行程序
r //run
- 暂停程序
Ctrl+c
- 继续程序
c //continue
- 单步执行,但不进入函数
n //next
- 单步执行,进入函数
s //step
- 设置断点
//breakpoint
b <函数名>
b <文件名> <行号>
b <文件名> <行号> <条件语句>
- 取消断点
dis <断点编号> //disable
- 激活断点
en <断点编号> //enable
- 删除断点
del <断点编号> //delete
- 查看断点
info b
- 查看堆栈
bt
- 切换到某层堆栈
fr <堆栈序号> //frame
- 切换到上层堆栈
up
- 切换到下层堆栈
down
- 查看源码
l //list
- 打印变量值
//print
p <变量名>
p/x <变量名>
- 设置变量值
set var <变量名>=<值>
- 打印内存
x <长度><格式><地址>
- 导出内存
dump mem <文件名><开始地址><结束地址>
- 上半代码,下半代码
wh
- 监视变量
watch <变量名>
- 不退出gdb重新产生可执行文件
make
- 执行shell命令在不离开gdb的情况下
shell
- 终止gdb
q //quit