您的位置:首页 > 其它

调试的艺术学习笔记--命令记录

2010-11-07 17:11 253 查看
1)单步调试: n (next), s(step 跟n的区别,s进入到函数内)

2)恢复操作:c(continue) 直到遇到下个断点

3)临时断点: tbreak 有效期,第一次遇到

4)检查变量:p (printf)

5)监视点:watch 当监视点的值发生变化时停止

6)查看栈:bt(backtrace) 显示整个栈的内容。

7)看已经设的断点: ib(info break)

8)设置断点:break function, break line_number, break filename:line_number, break filename:function

9)删除断点: delete+数值标识符(从第7点可得到) (不加参数,删除所有断点), clear使用跟第8点对应

10)禁用断点:disable+数值标识符 (重新启用 enable)

11)在单步时跳出函数:finish

12)在单步时跳出循环:until

13)条件断点:break break-arg if (condition),例: break main if argc > 1

14)断点命令列表(到断点自动执行):

commands breakpoint-number 例子:commands 1

... >printf "i = %d", i

commands >end

...

end

a) 在commands 中加入silent,过滤到其他无用的输出。

b) 最后一个commands是continue的话,自动continue。

例:comands 1

> silent

> printf "i = %d", i

> continue

> end

15)查看局部变量:info locals 得到当前栈中所有局部变量的值列表

16)设置变量:set x=12

17)GDB线程命令:

a) info threads(给出当前所有的线程信息)

b) thread 3(切换查看线程)

c) break 88 thread 3(当线程3到达源代码行88时停止执行)

d) break 88 thread 3 if x == y

e) thread apply all bt,查看所有的线程的栈信息。

18) 您可以以进程ID作为第二个参数,以调式一个正在运行的进程

gdb 程序名 1234

注意点:

1)重新编译文件时不要退出gdb,断点可以保存着。

2)在调试时不要开启优化代码的选项,不然经过了优化,设置的断点的位置跟编译后的位置相差可能很大。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: