过滤 gdb 的回溯以仅显示我的项目文件
Filtering gdb's backtrace to only display my project's files
当发生段错误时,我想找出我项目中哪里出错了。为此,我 运行 gdb
生成一个回溯,我将其记录到一个文件中,然后 运行 通过几个 sed
命令删除引用源文件或库的行不在我的项目中。例如,我对这样的行不感兴趣:
#2 0x00007ffff78bfb3d in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
现在,我只是在每次出现新案例时添加过滤规则(例如,以上内容与 "from /usr/lib/" 匹配)。但是不知道有没有更好的办法
在我查看的情况下,似乎我的文件在输出中只有不以 /
或 ../
开头的文件。但是我只用这个怕误报
没有正则表达式那么脆弱的解决方案也很好。
您可以使用 gdb Python 脚本功能在 Python 中编写自己的 bt
变体。如果你四处搜索,你应该能够找到一个这样写的。然后,你可以修改这个 bt
做任何你喜欢的事情;在这种情况下,我会建议基于框架的白名单 "objfile"(可执行文件或共享库的 gdb 术语)。
当发生段错误时,我想找出我项目中哪里出错了。为此,我 运行 gdb
生成一个回溯,我将其记录到一个文件中,然后 运行 通过几个 sed
命令删除引用源文件或库的行不在我的项目中。例如,我对这样的行不感兴趣:
#2 0x00007ffff78bfb3d in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
现在,我只是在每次出现新案例时添加过滤规则(例如,以上内容与 "from /usr/lib/" 匹配)。但是不知道有没有更好的办法
在我查看的情况下,似乎我的文件在输出中只有不以 /
或 ../
开头的文件。但是我只用这个怕误报
没有正则表达式那么脆弱的解决方案也很好。
您可以使用 gdb Python 脚本功能在 Python 中编写自己的 bt
变体。如果你四处搜索,你应该能够找到一个这样写的。然后,你可以修改这个 bt
做任何你喜欢的事情;在这种情况下,我会建议基于框架的白名单 "objfile"(可执行文件或共享库的 gdb 术语)。