2

私は今、真剣に何ヶ月も費やした問題を抱えています!

基本的に、HD5ファイルからの読み取りとHD5ファイルへの保存を必要とするコードを実行しています。これにはh5pyを使用しています。

問題(問題が何であれ)はケースの5%程度でのみ発生し(各実行には数時間かかります)、問題が発生するとPythonが完全にクラッシュするため、デバッグは非常に困難です。そのため、Python自体でデバッグすることはできません。単純なログを使用して、正確なクラッシュ状況を特定することも不可能です。これは非常にランダムで、コード内のさまざまなポイントでクラッシュするか、遅延があるように見えます。

OllyDbgを使用して何が起こっているのかを理解しようとしましたが、次の場所で常にクラッシュしていると安全に結論付けることができます:http: //i.imgur.com/c4X5W.png画像

PythonネイティブのPyObject_ClearWeakRefsを呼び出した直後に、アクセス違反のエラーメッセージが表示されたようです。奇妙なことに、ファイルは正常に書き込まれます。アクセス違反エラーの原因は何ですか?または、そのpythonは内部(スタックなど)であり、ファイル(つまり私のコード)に関連していませんか?

誰かがここで何が起こっているのか考えていますか?そうでない場合、正確に何が起こっているのかを知るためのより賢い方法はありますか?多分いくつかの隠されたPythonログまたは私が知らない何か?ありがとうございました

4

3 に答える 3

1

PyObject_ClearWeakRefsPythonインタープリター自体にあります。ただし、実行回数が少ない場合は、ハードウェアに関連している可能性があります。あなたが試すことができること:

  • 別のマシンでプログラムを実行します。そこでクラッシュしない場合は、ハードウェアの問題である可能性があります。
  • インストールされたバージョンが何らかの理由で破損した場合に備えて、Pythonを再インストールします。
  • メモリテストプログラムを実行します。
于 2012-08-15T15:00:24.653 に答える
1

すべての答えをありがとう。今回は2つのバージョンを実行しました。1つは新しいpythonインストールと同じプログラムで、もう1つは元のコンピューター/インストールで実行しましたが、すべてのHDF5読み取り/書き込み手順をnumpy読み取り/書き込み手順に置き換えました。

プログラムは2台目のコンピューターで時々クラッシュし続けましたが、プライマリコンピューターでは、変更されたコードでクラッシュすることはありませんでした。したがって、問題はHDF5、より具体的にはh5pyに関連していると結論付けるのが安全だと思います。その点で、より多くの人がh5pyで問題に遭遇したようです。私のアプリケーションでエラーが発生すると、大きな経済的損失が発生する可能性があるため、他の安定したソリューションを優先してHDF5を完全に破棄することにしました。

于 2012-09-26T21:46:53.090 に答える
-2

trycatchステートメントを使用します。これは、誤ったデータが入力されたときにプログラムがクラッシュするのを防ぐためにプログラムに入れることができます

于 2014-05-17T09:03:32.650 に答える