私はMiniDumpWriteDumpを通してアプリケーションのランタイム中に記録されたミニダンプをたくさん持っています。ミニダンプは、自分の開発マシンとは異なるOSバージョンのマシンで作成されました。ミニダンプからスタックトレースを抽出する方法は?
今、dbghelp.dllを使用して、ミニダンプからスタックトレースを抽出するプログラムを作成しようとしています。私はMINIDUMP_MODULE_LISTを歩いてSymLoadModule64を呼び出していますが、これはパブリックシンボルサーバからpdbs(kernel32など)をダウンロードできません。 "C:\ Windows \ System32"をシンボルパスに追加すると、dllが見つかってシンボルがダウンロードされますが、ミニダンプのdllと一致しないので、結果は役に立たなくなります。
どのようにdbghelp.dllに適切なpdbsをダウンロードして使用するように指示しますか?
[編集]
私はSymLoadModule64のみだけではSymLoadModule64でそう明らかに、ファイル名となしバージョン/チェックサム情報を受け取りdbghelpがダウンロードしたPDB把握することは不可能だと述べているのを忘れていました。
実際に情報はMINIDUMP_MODULE_LISTで使用できますが、dbghelp APIに戻す方法はわかりません。
追加のパラメータが必要なSymLoadModuleExがありますが、それが私が必要とするものか追加のパラメータのために渡すべきものがあるかどうかはわかりません。
[編集]
ありません運これまでのところ、そこものデバッグSDKでdbghelp.dllと一緒に配布さdbgeng.dll私が気づいたのに。 MSDNはかなりよく書かれていて、windbgが使うものと同じエンジンだと言います。たぶん私はそれを使用してスタックトレースを抽出することができます。
MSDNには個々のコンポーネントのみがドキュメント化されていて、どのように連携しているかはわからないので、dbgeng.dllを使用してミニダンプを処理する方法については、私はそれが代わりにdbghelp.dllのdbgeng.dll使用することが可能です更新で述べたように思えるれ、
:
あなたはおそらくあなたもミニダンプをミニにしました。 DumpType引数を持つTinker。 Debug + Windows + Modulesリストに正確なDLLパス、バージョン、タイムスタンプが表示されていることを確認してください。 –
いいえ、それは問題ではありません、私はWinDbgでミニダンプをロードでき、PDBを正しくダウンロードできます。 WinDbgでダンプを手動で調べるのではなく、スタックの検索を自動化したいのです。 – Zarat
ハックルートに行きたい場合は、コマンドをntsdに渡して出力をキャプチャするだけで済みます。 –