0

未処理の例外用に作成されたDLLから、なんとか作成したダンプファイルがあります。

n = 4 のようなことint* tt = new int[4]; return int[n];をすると、ダンプ ファイルを取得し、それを開いて、エラーが発生した行を確認できます。これは、リリース exe から直接、およびリリース DLL の両方で可能でした。

これは簡単なエラーで、メモリ ダンプの作成をテストするために入力しただけです。

現在、900kb のダンプ ファイルがあり、イベント ログには、エラーが .DLL に起因することが示されていますが、ファイルを開いても、ソース コードは表示されません。

コールスタックは

KERNELBASE.dll!RaiseException() + 0x3d bytes
clr.dll!RaiseTheExceptionInternalOnly() + 0x18f bytes
clr.dll!IL_Throw() + 0xe2 bytes
000007fe81f65fd7()
00000000034d1610()
000000002d06ecb8()
436f93ce00050011()
436f93cf00110012()
000000002d06ec50()
00006d930c4f7680( )
clr.dll!InlinedCallFrame::`vftable'()
000000002d06f3d8()

これは、DLLのどこからエラーが発生しているのかを理解するのにまったく役立ちません。これをデバッグする際のもう 1 つの問題は、ライブ PC でのみ発生し、私のデバッグ システムでは発生しないことです。これをデバッグする方法を見つけるのを手伝ってくれる人はいますか? DLLの呼び出しで発生するようですが、毎回ではなく、2回ごとにのみ発生します(1回目の試行の場合もあれば、5回目の試行の場合もあります)。ここで何が起こっているのか、私は完全に迷っています。

編集: Microsoft シンボルをロードしてコール スタックを更新しましたが、これがどこから来ているのかはまだわかりません。

4

1 に答える 1

2

kernelbase.dll のシンボルをロードする必要があります。そしておそらくclr.dll。

おそらくあなたはビジュアルスタジオを使用していますか?Microsoft シンボル サーバーからシンボルにアクセスするように設定します: http://msdn.microsoft.com/en-us/library/b8ttk8zy(v=vs.80).aspx

コールスタック内のアイテムを右クリックして、シンボルをロードするように指示する必要がある場合があります。

さらに、作成するソフトウェアのすべてのリリースについて、pdb ファイルのコピーを必ず保管してください。

于 2012-12-20T13:05:07.640 に答える