我正在编写一些崩溃报告代码,需要从核心转储文件中提取堆栈跟踪。
目前,我正在使用子进程调用:
'gdb -q -batch -nx -x /path/to/executable /path/to/coredump'
并传递一个包含内容的命令文件:
thread apply all bt full
quit
这很好用,但我必须解析看起来有点容易出错的输出。
一种替代方法可能是使用pygdb2包,但我不太确定它是否解决了我感兴趣的问题,因为包的描述提到从正在调试的python进程中控制gdb 。 https://bitbucket.org/antocuni/pygdb2/
这里有什么建议吗?
谢谢! 马修
答案 0 :(得分:0)
gdb支持运行python命令: https://sourceware.org/gdb/onlinedocs/gdb/Python-API.html#Python-API
解决方案仍然是将gdb作为子进程运行,但是在cmd文件中,运行一个python脚本,将堆栈转储到json文件。这比原始文本更容易解析。