Skip to main content
 首页 » 编程设计

运行代码时 Python 在极少数情况下会崩溃之如何调试

2025年05月04日9落叶无声

我有一个问题,我现在认真地花了几个月的时间!

本质上,我正在运行需要读取和保存 HD5 文件的代码。我为此使用 h5py。

调试非常困难,因为问题(无论它是什么)只发生在大约 5% 的情况下(每次运行需要几个小时),当它到达那里时,它会完全崩溃 python,所以用 python 本身调试是不可能的。使用简单的日志也无法确定确切的崩溃情况 - 它看起来非常随机,在代码中的不同点崩溃,或者有滞后。

我尝试使用 OllyDbg 来弄清楚发生了什么,并且可以安全地得出结论,它一直在以下位置崩溃:http://i.imgur.com/c4X5W.png

似乎是在调用python原生的PyObject_ClearWeakRefs后不久,出现访问冲突错误信息。奇怪的是文件被成功写入。什么会导致访问冲突错误?还是 python 内部(例如堆栈?)而不是文件(即我的代码)相关?

有人知道这里发生了什么吗?如果没有,是否有更聪明的方法来找出到底发生了什么?也许是一些隐藏的 python 日志或我不知道的东西? 谢谢

请您参考如下方法:

PyObject_ClearWeakRefs 在 python 解释器本身中。但如果它只发生在少量运行中,则可能与硬件有关。您可以尝试的事情:

  • 在不同的机器上运行你的程序。如果它没有在那里崩溃,则可能是硬件问题。
  • 重新安装 python,以防安装的版本因某种原因损坏。
  • 运行内存测试程序。