Visual Studio(またはWinDBG)を使用して別のマシンからWindowsプロセスダンプファイルをロードすると、次のような多くのメッセージが表示されます。
(Visual Studio 2005からの出力)
'DumpDS20080626-103000-4204-4012.dmp': Loaded 'c:\symbols_cache\ntdll.dll\411096d4b7000\ntdll.dll', Symbols loaded (source information stripped).
'DumpDS20080626-103000-4204-4012.dmp': Loaded 'c:\symbols_cache\kernel32.dll\411096d4106000\kernel32.dll', Symbols loaded (source information stripped)
'DumpDS20080626-103000-4204-4012.dmp': Loaded 'c:\symbols_cache\wsock32.dll\41109712a000\wsock32.dll', Symbols loaded (source information stripped).
'DumpDS20080626-103000-4204-4012.dmp': Loaded 'c:\symbols_cache\winmm.dll\411096df2e000\winmm.dll', Symbols loaded (source information stripped).
...
これらのメッセージは、デバッガーがシンボルキャッシュ(http://msdl.microsoft.com/download/symbolsから)からこれらすべてのシステムDLLの正確なバージョンを(正しく)ロードしていることを示しています。
ただし、次のようなメッセージも表示されます。
'DumpDS20080626-103000-4204-4012.dmp': Loaded '*C:\WINDOWS\system32\iphlpapi.dll', No matching binary found.
'DumpDS20080626-103000-4204-4012.dmp': Loaded 'C:\WINDOWS\system32\mfc42loc.dll', Binary was not built with debug information.
'DumpDS20080626-103000-4204-4012.dmp': Loaded '*C:\WINDOWS\system32\xpsp2res.dll', No matching binary found.
'DumpDS20080626-103000-4204-4012.dmp': Loaded '*C:\WINDOWS\system32\msjet35.dll', No matching binary found.
'DumpDS20080626-103000-4204-4012.dmp': Loaded '*C:\WINDOWS\system32\msjter35.dll', No matching binary found.
'DumpDS20080626-103000-4204-4012.dmp': Loaded '*C:\WINDOWS\system32\msjint35.dll', No matching binary found.
'DumpDS20080626-103000-4204-4012.dmp': Loaded '*C:\WINDOWS\system32\vbscript.dll', No matching binary found.
'DumpDS20080626-103000-4204-4012.dmp': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC80.MFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_3bf8fa05\mfc80u.dll', Symbols loaded.
'DumpDS20080626-103000-4204-4012.dmp': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_6b128700\msvcr80.dll', Symbols loaded.
...
したがって、私のマシンにインストールされているバージョンが実際にダンプが生成されたマシンのDLLと一致するファイルと、私のマシンのバージョンがそのマシンにあるバイナリと一致しないファイルがあるように見えます。ダンプを生成しましたが、MSシンボルサーバーにこれらのDLLのbin/symbolが含まれていないようです。
上記のDLL(iphlpapi.dll、...、msjint35.dll、...)は間違いなくMSからのものであるため、シンボルサーバーからフェッチされていないものが不足しているのではないかと思いました。
または、プロセス(-dumps)にシンボルのないDLLがあり、クラッシュコールスタックにそのようなDLLが含まれている場合は、幸運にも呼び出しに対応する必要があります。使用できるスタック?
(注:上記の出力は単なる例です。ただし、プログラムは任意のDLLの任意の呼び出しにガベージを渡すことができるため、ロードされたほとんどすべてのDLLでクラッシュが発生する可能性があります。)