gdb
1. 启动
- list
- list(l):列出源代码,接着上次的位置往下列,每次列10行
- list 行号:列出产品从第几行开始的源代码
- list 函数名:列出某个函数的源代码
- start:开始执行程序,停在main函数第一行语句前面等待命令
- next(n):执行下一列语句
- step(s):执行下一行语句,如果有函数调用则进入到函数中
- breaktrace(或bt):查看各级函数调用及参数
- frame(f) 帧编号:选择栈帧
- info(i) locals:查看当前栈帧局部变量的值
- finish:执行到当前函数返回,然后挺下来等待命令
- print(p):打印表达式的值,通过表达式可以修改变量的值或者调用函数
例如 p/a sum
- 其中/a为显示格式的参数
x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十六进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a 按十六进制格式显示变量。
c 按字符格式显示变量。
f 按浮点数格式显示变量。
- set var:修改变量的值
- quit:退出gdb
2. 断点
- break
- break(b) 行号:在某一行设置断点
- break 函数名:在某个函数开头设置断点
- break...if...:设置条件断点
- continue(或c):从当前位置开始连续而非单步执行程序
- delete
- delete breakpoints:删除所有断点
- delete breakpoints n:删除序号为n的断点
- disable breakpoints:禁用断点
- enable breakpoints:启用断点
- info(或i) breakpoints:参看当前设置了哪些断点
- run(或r):从开始连续而非单步执行程序
- display 变量名:跟踪查看一个变量,每次停下来都显示它的值
- undisplay:取消对先前设置的那些变量的跟踪
3. watch
- watch:设置观察点
- info(或i) watchpoints:查看当前设置了哪些观察点