近几天在学Linux下C语言的编程。不可避免的就要遇到调试。Linux下调试用的最多的就是GDB了吧。本文记录下一些常见的命里及其解释,以便以后复习之用,同时也供有兴趣的同学一起探讨和学习。记录比较粗糙,以我自己能理解为准:
1.backtrace(或者bt): 查看各级函数的调用及参数。——用这个命令跟踪调试递归真的是太清楚了。
2:finish: 连续运行到当前函数返回为止,然后停下来等待命令。
3:frame(或f) 帧编号: 选择栈帧。至于栈帧可以的编号可以通过上面的bt来查看
4:info(或i) locals: 查看当前栈帧局部变量的值
5:list(或l): 列出源代码,接着上次的位置往下列,每次列10行
6:list 行号: 列出从第几行开始的源代码
7:list 函数名: 列出某个函数的源代码
8:next(或n): 执行下一行语句
9:print(或p): 打印表达式的值,通过表达式可以修改变量的值或者调用函数
10:set var : 修改变量的值,后跟赋值语句
11:start: 开始执行程序,停在main函数第一行语句前等待命令
12:step(或s): 执行下一行语句,如果有函数调用则进入到函数中
二 有关断点:
13:break(或b) 行号: 在某一行设置断点
14:break 函数名: 在某个函数开头设置断点
15:break....if.....: 设置条件断点
16:continue(或c): 从当前位置开始连续运行程序
17:delete breakpoints 断点号: 删除断点,至于断点号 可以用 Info breakpoints 查看
18:display 变量名: 跟踪查看某个变量,每次停下来都显示它的值
19:undisplay 跟踪显示号: 取消跟踪显示
20: disable breakpoints 断点号: 禁用断点
21:enable 断点号: 启用断点
22: info(或i) breakpoints: 查看当前设置了哪些断点
23:run(或r): 从头开始连续运行程序
三:观察点
24:watch : 设置观察点,当观察点位置的值发生变化时触发断点
25:info(或 i) watchpoints: 查看当前设置了哪些观察点
26:x(eg: x/7c ): 从某个位置开始打印存储单元的内容,全部当成字节来看,而不区分哪个字节属于哪个变量
这个比较难以理解,一个非常清楚的例子:http://learn.akae.cn/media/ch10s03.html