首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Apport崩溃转储调试Python程序

使用Apport崩溃转储调试Python程序
EN

Stack Overflow用户
提问于 2015-04-10 22:52:44
回答 1查看 2.7K关注 0票数 6

我有一个Python程序,它有时会因为“双重免费或损坏”错误而崩溃。我正在试图找出这种情况发生在哪里(可能是在我使用的众多库中的一个),这样我就可以防止它崩溃。为此,我启用了核心转储,现在可以使用Apport .crash文件了。

我被困在这里了。如何将核心转储加载到gdb或其他可以让我查看任何可用堆栈跟踪信息的东西?

apport似乎很棒,但不会加载,因为.crash文件中没有包:

代码语言:javascript
复制
ERROR: report file does not contain one of the required fields: CoreDump DistroRelease Package ExecutablePath

我也想不出如何将它直接加载到gdb中。我已经在完整的gdb /usr/bin/python <crashfile>文件上,在.crash文件的"CoreDump“部分,以及在base64 64解码版本的"CoreDump”部分上尝试了.crash。每次我得到这个错误:

代码语言:javascript
复制
<crashfile> is not a core dump: File format not recognized

有没有一种不需要包就可以使用apport或者以gdb可以使用的方式从崩溃文件中提取核心转储的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-13 17:34:54

事实证明,修改.crash文件以允许apport打开它是相当简单的。我只需要加上

代码语言:javascript
复制
Package: python2.7

到档案里。为了更好地衡量,我还确保了"ExecutablePath“是用于Python的:

代码语言:javascript
复制
ExecutablePath: /usr/bin/python2.7

在我的例子中,可执行路径以前是一个不同的文件(一个特定于我的程序)。我不知道这一步是否真的有必要。

完成此操作后,我可以运行apport-retrace -g <crashfile>在gdb中打开它,然后使用bt提取堆栈跟踪。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29571866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档