2009-09-30 59 views
0

当我使用gdb执行调试会话时,它会为我输出一些信息。我该如何阻止这一点。这里有一个例子:在执行指令时抑制gdb的默认输出

Breakpoint 1, 0x100000d4 in ??() 
(gdb) si 
0x100000d8 in ??() 
(gdb) si 
0x100000dc in ??() 
(gdb) 

在这里,我想删除说0x100000d8 in ??()线。我无法找到有关压制此输出的文档中的任何内容。有任何想法吗?

感谢 添

回答

1

可以抑制0x100000d8set print address off打印。看source(搜索static void print_frame (...)),我不认为压制其余的可能。

1

有点神秘的解决方案是定义一个打开“记录重定向”功能,然后逐步执行指令,最后关闭日志记录。例如:

define stepix 
    set logging redirect on 
    set logging file /tmp/whatever 
    set logging on 
    si 
    set logging off 
end 

但该解决方案将抑制所有输出,而不仅仅是0x100000d8 in ??()。可能不适合你的需求/品味。我不认为压制这种产出是可能的。

+2

...你当然可以'设置日志文件/ dev/null',这样它就不会向硬盘发送任何东西。 – 2010-12-06 02:18:12

0

现在是2016年,对于那些想要有选择地禁用命令输出的人来说,我有一个丑陋的解决方案。我不知道你的gdb应该是多么近。

而不是

(gdb) stepi 

试试这个

(gdb) python gdb.execute("stepi", to_string=True) 

感觉就像这样一个基本功能,请,分享,如果你有更好的方法尤其是一个不依赖于python。我希望在循环中运行stepi时避免(可能)性能下降。