2011-08-19 176 views
2

有没有办法如何管道内部gdb命令输出到一些shell命令如grep - [cmd] ! grepmdb的变种?GDB - 管道输出的内部命令到shell命令

要更清楚:在solaris mdb中,您可以例如写

main::dis ! grep call 

检测哪些功能从主要调用(或grep一些注册名称,看看它是如何改变)。我感兴趣的是,如果在gdb中有这样的可能性,而不需要从gdb切换。

+1

也许是时候开始寻找到Python脚本来定义新的命令:http://stackoverflow.com/questions/4060565/how-to-script-gdb-with-python-example-add- breakpoints-run-what-breakpoint-d :-) –

回答

4

我不确定是否正确理解了您的问题。如果您想要在调试会话期间运行的GDB命令的日志结果,那么从GDB开始支持。

show logging     # displays weather logging is on/off 
set logging on     # enable logging 
set logging off     # disable logging 
set logging file log-file.txt # set name for log file, default is gdb.txt 

日志文件将在当前目录中生成。

而且您可以附加调试会话日志或使用

set logging overwrite <on/off> 
+0

谢谢你的回答。日志记录不完全是我正在寻找的。在Solaris mdb中,可以编写例如'main :: dis! grep调用“,调试器将调用grep来处理拆分结果。我在gdb中寻找类似的方法 - 运行grease of dissasemble命令输出(或者发送给less)。我可以使用例如objdump和grep它的结果,或者从你提到的日志文件中获得输出,但是我有兴趣知道是否有办法在gdb中执行它。 – Michy

+1

不要忘记将分页设置为关闭。logging/shell命令是目前唯一的方法,例如设置日志记录,disas main,设置注销,shell grep调用gdb.txt,有人正在处理管道命令,这可能会使这个更直接 – matt

-1

一个新的GDB的命令已经出台,即管创建每个调试会话新。如果要使用某个shell命令或某个脚本处理GDB命令的输出,可以使用这个新命令完成。

http://www.gdbenhanced.freewebsitehosting.com/

+0

感谢您的信息,这正是我错过了。希望它能很快成为官方发布的一部分。 – Michy

+5

感谢链接已关闭... – sillyMunky