rbreak 可以在一个文件的所有函数设置断点的GDB命令

来源:互联网 发布:电脑远程视频监控软件 编辑:程序博客网 时间:2024/06/05 01:56

http://hellogcc.blogbus.com/logs/67436524.html
teawater@hellogcc

当我在使用GDB的时候,我总想直接设置断点到一个文件上。这样当被调试程序运行到这个文件里任何一行代码的时候,他就会被断点停止。但是GDB的普通断点指令是不支持这么作的。

现在,gdb-cvs-head中有了一个新命令(应该也会出现在gdb 7.2中):
rbreak REGEX
这个命令可以在所有满足正则表达式REGEX的函数上设置断点。

这个命令在这些函数上设置无条件断点,并且打印出设置了断点的函数列表。这些断点跟break命令设置的断点一样,所以你可以像操作普通断点一样操作他们。

这个命令中使用的正则表达式和grep中使用的一样,注意这个正则表达式和shell语法不太一样。比如"foo*"将对应名称中包含"fo"后面不跟o或者跟着若干个o的函数,这是一个.*结构的正则表达式。要想对应名称为foo开头的函数,要使用^foo。

当调试C++程序的时候,rbreak用在给不属于任何class的重载函数设置断点很方便。

rbreak可以直接向一个程序的所有函数设置断点,比如:
(gdb) rbreak .

rbreak FILE:REGEX
如果使用rbreak的时候增加一个文件名,这将限制rbreak的搜索范围在一个文件FILE中。这可以实现一些特别的功能,比如设置断点到一个文件中的所有函数上:
(gdb) rbreak file.c:. 

0 0
原创粉丝点击