質問

私は、マネージコード(C#のコンソールからクラッシュダンプをロードするために WinDbgのに使用していますアプリケーションは、のどれCPU の)のために構築され、およびクラッシュダンプは、x64プラットフォーム上で作成されています。私は、x64プラットフォーム上でデバッグしています。私は、関連する PDB のシンボルパスにファイルを。

しかし、WinDbgのはいつも奇妙なフォルダからシンボルを見つけます。 (私が使用してから得たときSYMうるさい!)ここに例があります:

SYMSRV:  c:\MySymbols\FooService.pdb\4311207E2E2D442CB7473828D2488F941\FooService.pdb not found

私のアプリケーションはFooService.exeと呼ばれ、関連するPDBファイルがFooService.pdbという名前です。私は、シンボルパスとしてC:\MySymbols設定とディレクトリFooService.pdbC:\MySymbolsをコピーしました。しかし、なぜWinDbgのはFooService.pdbC:\MySymbolsを見つけることが、奇妙なサブフォルダから、「FooService.pdb \ 4311207E2E2D442CB7473828D2488F941」しないのですか?

私のシナリオでは、PDBシンボルファイルをロードするために、最善の解決策(私は手動で自分でサブフォルダFooService.pdb\4311207E2E2D442CB7473828D2488F941を作成する必要があります)とは何ですか?

役に立ちましたか?

解決

私は、パスの奇妙な部分がシンボルキャッシュ内のPDBをバージョン管理するために使用されていると信じています。キャッシュは、シンボルのダウンローダは、それらを離れて保つために何かをする必要があり、同じアプリケーションの異なるバージョンを含む多くの用途に使用できるようにます。

あなたは.reload /foコマンドを使用して、任意のキャッシュされたコピーを無視するシンボルローダーを強制することができます。 .sympathオプションと組み合わせることで、あなたは読み込みを設定することができるはずです。シンボルパスにローカルのパスを追加する簡単な方法は.sympath+ <PATH>です。その後、以前にキャッシュされたのPDBを無視する.reload /foを行います。

編集:私は、私は私が最初にあなたの質問を読み違えると考えているように私の答えは少し静かに変更。私は、この更新がより有用であると思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top