gpt4 book ai didi

python-2.7 - 使用 Apport 故障转储调试 Python 程序

转载 作者:行者123 更新时间:2023-12-04 20:01:03 26 4
gpt4 key购买 nike

我有一个 Python 程序有时会由于“双重释放或损坏”错误而崩溃。我试图找出发生这种情况的地方(可能在我正在使用的众多库之一中),以便我可以防止它崩溃。为此,我启用了核心转储,现在我有了一个 Apport .crash要使用的文件。

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

apport-retrace 看起来不错,但不会加载,因为 .crash 中没有包文件:

ERROR: report file does not contain one of the required fields: CoreDump DistroRelease Package ExecutablePath

我也不知道如何将它直接加载到 gdb 中。我试过 gdb /usr/bin/python <crashfile>上全 .crash文件,仅在 .crash 的“CoreDump”部分文件,以及“CoreDump”部分的 base64 解码版本。每次我收到此错误时:
<crashfile> is not a core dump: File format not recognized

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

最佳答案

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

Package: python2.7

到文件。为了更好地衡量,我还确保“ExecutablePath”适用于 Python:
ExecutablePath: /usr/bin/python2.7

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

这样做之后,我可以运行 apport-retrace -g <crashfile>在 gdb 中打开它,然后使用 bt提取堆栈跟踪。

关于python-2.7 - 使用 Apport 故障转储调试 Python 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29571866/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com