2013-04-11 126 views
6

有没有办法在gdb中输出print命令?在我的情况下,我正在使用gdb调试核心转储,并且正在调试的对象包含许多元素。我发现很难找到匹配的属性,即:如何grep gdb print

(gdb) print *this | grep <attribute> 

谢谢。

+1

然后你想要这个补丁:http://sourceware.org/ml/gdb-patches/2011-07/msg00572.html – cnicutar

+1

这个语法的主要问题是,字符是一个有效的c操作符。 – matt

回答

5

(gdb)print * this | grep

实现此目标的“标准”方法是在emacs中使用Meta-X gdb

一种替代方案:

(gdb) set logging on 
(gdb) print *this 
(gdb) set logging off 
(gdb) shell grep attribute gdb.txt 

通过比较上述cnicutar看起来很吸引人提到的补丁。我猜测它(或其等价物)永远不会提交的原因是大多数GDB维护者使用emacs,所以首先没有这个问题。

+0

谢谢@雇佣俄罗斯 –

+0

@雇用俄罗斯理由:http://sourceware.org/ml/gdb-patches/2011-07/msg00284.html – matt

+0

你在说什么?我正在使用Emacs,只是试着'print $ rax | grep 41',它说«没有符号“grep”»。如果你的意思是说emacs允许搜索,那肯定不是本机grep。 grep可以在脚本中使用,即使gdb观察点不停止在特定的函数*(这就是我想要实现的)*。 –