• 締切済み

UMDH.EXEで関数名がダンプ出力されない

UMDH.EXEを使ってアプリケーションのメモリリークを調べようとしています。 マイクロソフトのサポートページで紹介されている方法で試しにnotepad.exeのダンプファイルを出力したのですが、マイクロソフトのページで紹介されているような関数名が入ったダンプが出力されません。 シンボルファイルはダウンロードされているようなのですが、なにが悪いのか分かりません。 umdh で -gオプション追加しても同じです。(マイクロソフトで紹介されている-dは使えませんでした) NTSD システム デバッガでld notepadをしたらシンボルファイルは読み込まれているような感じでした。 lmコマンドではいまいち説明されているような内容ではなかったですが。 どなたかご存じの方いらっしゃたらご教示ください。 ちなみにWindows7 Pro、windowsXp Proの両方で試してみても同じです。 以下、その時の手順とnotepadのダンプファイル(一部)です。 ---------------------------------------------------------------------------------- 【準備】 1)マイクロソフトのHPからWDKをダウンロード。 2)Debugging Tools for Windowsをインストール。 3)環境変数PATHにDebugging Tools for Windowsのインストールフォルダを   追加。 C:\Program Files\Debugging Tools for Windows (x86) 4)環境変数_NT_SYMBOL_PATHにsymsrv構文をセットする。 SRV*D:\localsymbols*http://msdl.microsoft.com/download/symbols (symsrv*symsrv.dll*D:\localsymbols*http://msdl.microsoft.com/download/symbolsも試してみた) 5)シンボルファイル(pdbファイル、又はdbgファイル)をマイクロソフトシンボルサーバーからダウンロード。   symchk /r c:\windows\system32 /s %_NT_SYMBOL_PATH%   %_NT_SYMBOL_PATH%で指定したフォルダにはシンボルファイルがダウンロードされている。 (Ntdll.dll やkernel32.dllもダウンロードされている) 【ダンプ出力】 1)ヒープ割り当てのダンプを作成するためにカーネルに割り当ての追跡を実行するようOSに伝える。 gflags -i notepad.exe +ust 2)notepad.exeを起動 3)コマンドプロンプトからtlistでnotepad.exeのPIDを取得する(メモする) 4)ヒープダンプを取得する。 コマンドプロンプトから umdh -p:3808 -f:D:\HEAPDUMP\notepad3808-1.log ---------------------------------------------------------------------------------------------------------------------------- その時のダンプファイル(抜粋)です。 // // UMDH: version 6.1.7650.0: Logtime 2010-12-03 15:21 - Machine=PJ-SS-I9 - PID=4288 // // Debug privilege has been enabled. // OS version 6.1 // Umdh OS version 6.1 // // Preparing to dump heap allocations. // Only allocations for which the heap manager collected a stack are dumped. Allocations whithout stack are ignored. // The stack trace for an allocation is dumped as a list of addresses. They will be resolved to function names at compare time. // // Connecting to process

みんなの回答

回答No.1

使ったことはないのですがx64関係で苦労したことあるので気になった点だけ述べておきます。 使われている環境はx64の様ですが「Debugging Tools for Windows」は64ビット版でしょうか。インストールされたパスは32ビットのように思えます。 もし32ビット版であれば、x64でのnotepadは64ビットなので参照できないのではと感じました。 このあたりどうでしょうか?。

b-max888
質問者

補足

ike-2000さん、ご回答ありがとうございます。 使用している環境はWin7の32ビット環境です。(&WinXPの32ビット環境でも試しています) WDKは32ビット版(X86)をインストールしています。 前回はISOイメージを落としてインストールしたんですが、32ビット版の最新版が単体でダウンロードできたので、それを入れ直してみましたが結果は同じでした。(WDKバージョンはISOイメージの時と同じでした) シンボルファイルは前回ダウンロードしたものままでした。