1

managed.exe の MyManagedFunc は、unmanaged.dll の MyUnmanagedFunc() を呼び出します。Win32 を使用して unmanaged.dll にミニダンプを生成します。SetUnhandledExceptionFilter. コールスタックで MyUnmanagedFunc を確認できますが、マネージ側では何も役に立ちません。

WinDbg と SOS.dll を使用してマネージド コールを確認できるはずですよね?以下は私のWinDbgセッションです。私は何を間違っていますか?

実行可能な検索パスは次のとおりです。
Windows XP Version 2600 (Service Pack 3) MP (4 procs) 無料の x86 互換
製品: WinNt、スイート: SingleUserTS
マシン名:
デバッグ セッション時間: Fri Sep 25 12:59:28.000 2009 (GMT-5)
システム稼働時間: 利用できません
プロセス稼働時間: 0 日 0:00:08.000
...................................................
このダンプ ファイルには、関心のある例外が格納されています。
保存された例外情報は、.ecxr 経由でアクセスできます。
(da0.1340): ゼロによる整数除算 - コード c0000094 (1 回目/2 回目のチャンスはありません)
eax=03a50000 ebx=001a2578 ecx=00000007 edx=7c90e514 esi=001a2550 edi=001a25a8
eip=7c90e514 esp=0012dd24 ebp=0012dd34 iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
*** エラー: シンボル ファイルが見つかりませんでした。ntdll.dll のシンボルをエクスポートするようにデフォルト設定 -
ntdll!KiFastSystemCallRet:
7c90e514 c3 ret
*** エラー: シンボル ファイルが見つかりませんでした。kernel32.dll のシンボルをエクスポートするようにデフォルト設定 -
0:000> .loadby sos mscorwks
0:000> !スレッド
*** エラー: シンボル ファイルが見つかりませんでした。mscorwks.dll のシンボルをエクスポートするようにデフォルト設定 -
mscorwks.dll の PDB シンボルが読み込まれていない
ThreadStore のリクエストに失敗しました
0:000> .ecxr
eax=0000000c ebx=00160c20 ecx=00000000 edx=00000000 esi=0012efb8 edi=0012eea4
eip=01201712 esp=0012edd8 ebp=0012eea4 iopl=0 nv up ei pl nz na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010206
*** 警告: NativeDLL.dll のチェックサムを確認できません
NativeDLL!MyBad+0x22:
01201712 f77d0c idiv eax,dword ptr [ebp+0Ch] ss:0023:0012eeb0=00000000
*** 警告: System.Windows.Forms.ni.dll のチェックサムを確認できません
*** エラー: モジュールのロードは完了しましたが、System.Windows.Forms.ni.dll のシンボルをロードできませんでした

4

2 に答える 2

1

ミニダンプの種類は MiniDumpWithFullMemory である必要があります。そのタイプでなければ、「ThreadStore」はありません。

于 2009-09-26T07:06:57.130 に答える
1

出力から判断すると、適切なシンボル パスが設定されていません。コマンド .symfix を使用して、WinDbg が既定のパブリック Microsoft シンボル サーバー (ローカル キャッシュを使用) を使用するようにします。これは、セッション出力に詳細が必要な場合に必要です。シンボルの設定の詳細については、WinDbg ヘルプ ファイルを確認してください (.hh を使用して WinDbg コマンド ウィンドウから起動します)。

現在の出力から、スレッド da0.1340 でゼロ除算の例外が発生しているようです。ただし、適切な設定がないと、sos コマンドは有用な情報を提供しません。

于 2009-09-25T18:29:27.057 に答える