有用的GDB命令,用于代码分析、阅读

设置大量断点时,可以利用命令rbreak 命令,后面跟正则表达式。

(gdb)rbreak abc.*

将在所有abc开头的函数上设置断点。这个在阅读代码的时候也是很有用的。


(gdb)set logging file /home/mygdb.log    #设置新的log file
(gdb) set logging on   #把gdb的屏幕输出保存到文件(缺省文件名为gdb.txt中)
(gdb)set confirm off    #不需要确认

 

再进一步,gdb的commands命令是很有用的,这个命令用来定义指定的断点触发以后将要做什么事情。比如可以打印出变量,或者打印出堆栈什么的。这个对于调试而言是相当有效的。另外对于分析代码也很有用,

 

比如你对函数系列ABC* 很感兴趣,你可以设置断点rbreak ABC.*  , 然后就可以看到gdb会对每一个匹配的函数分配一个断点号,然后对于所有的这些断点号定义

command 1
bt 2
continue
end

command 2
bt 2
continue
end

 

对每个断点都这样做以后,每次碰到这个函数都会打印出最顶两层堆栈,然后继续运行。如此可以把这些函数的整个运行过程记录下来。当把gdb log打开后,只需要后处理这个log文件就可以了。

当然对于上面对每个断点定义bt 2 , continue 的过程可以通过脚本来实现。然后利用source 来设定断点和命令。

 

如此,算是看到了gdb的超级强大的功能了。



本文地址: http://www.bagualu.net/wordpress/archives/2368 转载请注明




发表评论

电子邮件地址不会被公开。 必填项已用*标注