我想在发生段错误时找到项目中出现问题的地方。为此我运行gdb
来生成一个回溯,我将其记录到一个文件,然后运行一些sed
命令来删除引用不在我的项目中的源文件或库的行。例如,我对这样的行不感兴趣:
#2 0x00007ffff78bfb3d in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
现在我只是在每次出现新案例时添加过滤规则(例如,上面与"来自/ usr / lib /&#34匹配)。但我想知道是否会有更好的方法。
在我查看的情况下,似乎我的文件中唯一不以输出中的/
或../
开头的文件。但如果我只是使用它,我害怕误报。
比正则表达式更脆弱的解决方案也很棒。
答案 0 :(得分:1)
您可以使用gdb Python脚本功能在Python中编写自己的bt
变体。如果你在周围搜索,你应该能够找到一个这样写的。然后,您可以修改此bt
以执行您喜欢的任何操作;在这种情况下,我会建议基于" objfile"的白名单框架。 (来自可执行文件或共享库的gdb术语)。