0

私の無知を許してください、しかし私はVisualStudioまたはWindowsのDLLとサービスに精通していません。通常、私は組み込み環境で作業していますが、どういうわけか(幸運なことに)Windowsサービスの1つ、実際にはMSVCR80.DLLで発生したクラッシュのトラブルシューティングを選択しましたが、これはサービス(Windows以下のイベントログ)

Faulting application name: MySrvc.exe, version: 0.0.0.0, time stamp: 0x4fee02e5
Faulting module name: MSVCR80.dll, version: 8.0.50727.4940, time stamp: 0x4ca2b271
Exception code: 0xc000000d
Fault offset: 0x00008aa0

私が抱えている問題は、プロセスに接続してからクラッシュさせると、デバッガーが壊れて、コールスタックにmscvr80.dllとntdll.dll内の一部の呼び出ししかなく、それだけで、サービスからの呼び出しがないことです。それらのライブラリに。私の推測では、ライブラリはマルチスレッドであり、私が見ているスタックはそのスレッドの1つにすぎません。しかし、VSデバッガーが壊れた場合、すべてのスレッドを一時停止しませんか?そして、他のスレッドのコールスタックを調べる方法はありますか?それとも私はここで完全にベースから外れていますか?

繰り返しになりますが、この分野での私の無知を許してください。あなたが提供できるアドバイスや指示は大歓迎です。前もって感謝します!

-H

4

1 に答える 1

0

次の 2 つの可能性があります。

  1. あなたが言うように、あなたは間違ったスレッドを見ています。その場合、デバッグ/ウィンドウ/スレッドを介して、スレッドウィンドウを使用して正しいスレッドに切り替えることができます。(しかし、それはありそうもありません - スレッドがクラッシュすると、VS はそのスレッドを表示します。)

  2. システム DLL のシンボルを読み込む必要があります。Visual Studio は、シンボルがないとスタック トレースを追跡できない場合があります。[ツール]、[オプション]、[デバッグ]、[シンボル] の順に移動し、Microsoft からシンボルを取得していることを確認します。

于 2013-03-05T03:34:14.830 に答える