Python在运行代码时很少崩溃如何调试?

2024-06-01 11:56:11 发布

您现在位置:Python中文网/ 问答频道 /正文

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

实际上,我运行的代码需要读取和保存到HD5文件。我用的是h5py。在

调试非常困难,因为问题(无论它是什么)只在大约5%的情况下发生(每次运行需要几个小时),当它出现时,它会彻底崩溃python,因此用python本身进行调试是不可能的。使用简单的日志,也不可能精确地确定崩溃的具体情况——它看起来非常随机,在代码中的不同点崩溃,或者有延迟。在

我尝试使用OllyDbg来判断发生了什么,并可以安全地得出结论:它总是在以下位置崩溃:http://i.imgur.com/c4X5W.pngimage

这似乎是在调用python本机PyObject_ClearWeakRefs之后不久,出现了一条访问冲突错误消息。奇怪的是文件被成功写入。什么会导致访问冲突错误?或者说python是内部的(例如堆栈?)与文件(即我的代码)无关?在

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


Tags: 文件代码comhttp错误时间情况小时
3条回答

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

  • 在另一台计算机上运行程序。如果它没有在那里崩溃,那可能是硬件问题。在
  • 重新安装python,以防安装的版本以某种方式损坏。在
  • 运行内存测试程序。在

谢谢你的回答。这次我运行了两个版本,一个是新的python安装和我的相同程序,另一个是在我原来的计算机/install上运行的,但是用numpy读/写过程替换了所有HDF5读/写过程。在

这个程序在我的第二台计算机上偶尔会崩溃,但在我的主计算机上,代码更改后我没有崩溃。因此,我认为可以得出结论,这些问题与HDF5或更具体地说是h5py有关。似乎更多的人在这方面遇到了h5py的问题。考虑到我的应用程序中的任何错误都可能导致巨大的经济损失,我决定完全放弃HDF5,转而使用其他稳定的解决方案。在

使用try-catch语句。这可以放入程序中,以防止程序在输入错误数据时崩溃

相关问题 更多 >