过滤gdb的回溯以仅显示项目的文件

时间:2015-03-01 01:14:10

标签: regex gdb

我想在发生段错误时找到项目中出现问题的地方。为此我运行gdb来生成一个回溯,我将其记录到一个文件,然后运行一些sed命令来删除引用不在我的项目中的源文件或库的行。例如,我对这样的行不感兴趣:

#2  0x00007ffff78bfb3d in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6

现在我只是在每次出现新案例时添加过滤规则(例如,上面与"来自/ usr / lib /&#34匹配)。但我想知道是否会有更好的方法。

在我查看的情况下,似乎我的文件中唯一不以输出中的/../开头的文件。但如果我只是使用它,我害怕误报。

比正则表达式更脆弱的解决方案也很棒。

1 个答案:

答案 0 :(得分:1)

您可以使用gdb Python脚本功能在Python中编写自己的bt变体。如果你在周围搜索,你应该能够找到一个这样写的。然后,您可以修改此bt以执行您喜欢的任何操作;在这种情况下,我会建议基于" objfile"的白名单框架。 (来自可执行文件或共享库的gdb术语)。