我有一个问题,我现在认真度过了几个月!
基本上我运行的代码需要读取并保存到HD5文件。我正在使用h5py。
调试非常困难,因为问题(无论是什么)只发生在5%的情况下(每次运行需要几个小时),当它到达那里时它会完全崩溃python,因此无法使用python进行调试。使用简单的日志也无法确定崩溃的情况 - 它似乎非常随机,在代码中的不同点崩溃,或者滞后。
我尝试使用OllyDbg来弄清楚发生了什么,并且可以有把握地得出结论:它始终在以下位置崩溃:http://i.imgur.com/c4X5W.png
似乎是在调用python本机PyObject_ClearWeakRefs之后不久,出现了访问冲突错误消息。奇怪的是该文件已成功写入。什么会导致访问冲突错误?或者是python内部(例如堆栈?)而不是文件(即我的代码)相关?
有没有人知道这里发生了什么?如果没有,是否有更聪明的方法来找出究竟发生了什么?也许一些隐藏的python日志或我不知道的东西? 谢谢
答案 0 :(得分:1)
PyObject_ClearWeakRefs
在python解释器本身。但如果它只发生在少量运行中,它可能与硬件有关。你可以尝试的事情:
答案 1 :(得分:1)
感谢所有答案。我这次运行了两个版本,一个是新的python安装和我的相同程序,另一个是我原来的计算机/安装,但用numpy读/写程序替换所有HDF5读/写程序。
程序在奇怪的时间继续在我的第二台计算机上崩溃,但在我的主计算机上,我没有使用更改的代码崩溃。我认为可以安全地得出结论,问题是HDF5或更具体地说是与h5py有关。在这方面似乎有更多的人遇到了h5py的问题。鉴于我的应用程序中的任何错误都会导致潜在的巨大财务损失,我决定完全转储HDF5以支持其他稳定的解决方案。
答案 2 :(得分:-2)
使用try catch语句。这可以放入程序中,以便在输入错误数据时停止程序崩溃