GDB是什么
GDB,GNU项目调试器,允许 查看一个程序运行过程中发生了什么?或者是程序崩溃时,他在做什么?
GDB可以做四件事情:
- 启动程序,指定可能影响其行为的任何内容
- 是程序在指定条件下停止
- 当程序停止时,可以检查发生了什么
- 可以更改程序中的内容,纠正一个错误的影响,并且可以继续了解另一个错误
GDB常用调试命令
命令 | 作用 |
---|---|
help | 查看命令帮助,具体查询方式是help+命令,简写h |
run | 重新开始运行文件,简写r |
start | 单步执行,运行程序,停在第一执行语句 |
list | 查看源码,list -n:从第n行开始查看,list+函数名:查看具体函数,简写r |
set | 设置变量的值 |
next | 单步调试 (逐过程,函数直接执行),简写n |
step | 单步调试(逐语句,跳进自定义函数内部执行),简写s |
backtrace | 查看函数的调用的栈帧和层级关系,简写bt |
frame | 切换函数的栈帧,简写f |
info | 查看函数内部局部变量的数值,简写i |
finish | 结束当前函数,返回到函数调用点 |
continue | 继续运行,简写c |
打印值及地址,简写p | |
quit | 退出gdb,简写q |
break+num | 在第num行设置断点,简写b |
info breakpoints | 查看当前设置的所有断点 |
delete breakpoints num | 删除第num个断点,简写d |
display | 追踪查看具体变量值 |
undisplay | 取消追踪观察变量 |
watch | 被设置观察点的变量发生修改时,打印显示 |
i watch | 显示观察点 |
enable breakpoints | 启用断点 |
disable breakpoints | 禁用断点 |
x | 查看内存x/20xw 显示20个单元,16进制,4字节每单元 |
run argv[1] argv[2] | 调试时命令行传参 |