18

私の Delphi プログラムは NT サービスとして実行され、2 か月以上正常に実行されていましたが、突然停止してクラッシュ ダンプが生成されます。

障害のあるアプリケーション名: tca_shctisvc_ip.exe、バージョン: 7.1.0.1843、タイム スタンプ: 0x2a425e19 障害のあるモジュール名: 不明、バージョン: 0.0.0.0、タイム スタンプ: 0x00000000 例外コード: 0xc0000005 障害オフセット: 0x00000000

Windows イベント ログの情報に基づいて作業する実際のアドレスはありませんでした。ミニ ダンプを WinDbg に読み込むことができましたが、例外があったとのことでしたが、スタック フレームに問題が見つかりました。別のツール (Viewminidump) で、実行中のスレッドのスタックを表示できました。

この問題の解決はどこから始めればよいですか?

4

3 に答える 3

39

例外コード0xc0000005はアクセス違反です。AV at fault offset0x00000000は、サービスのコード内の何かがnilポインターにアクセスしていることを意味します。サービスが何にアクセスしているかを調べるには、実行中にサービスをデバッグする必要があります。デバッガー内で実行できない場合は、少なくともEurekaLogMadExceptなどのサードパーティの例外ロガー フレームワークをインストールして、AV の時点でサービスが何をしていたかを調べてください。

于 2013-02-19T04:40:13.820 に答える
0

スタックフレームの問題は、スタックの破損(本当に恐ろしい獣)、最適化、またはC / C ++ / C#/Delphiやその他の狂気などのフレームワークの混合を示している可能性があります-スタックフレームに関する絶対的な基準はありません。(一部の言語にはそれらさえありません!)。

したがって、スタックフレームの問題に少し悩まされ、それを無視して、Remyの答えを使用することをお勧めします。

于 2013-02-19T05:18:46.813 に答える