WinDbgを使用する場合、プライベートシンボルファイル(pdb?)はどこに配置する必要がありますか?
私の状況は次のとおりです。DLLデバッグしたい。このDLLのソースコードとシンボルファイルがあります。このDLLは別のDLL(これにはシンボルもソースもありません))、これはEXEによって呼び出されます(これにもシンボルもソースもありません)。
私の問題は、次のような警告が表示されることです
***警告:C:\ TheProgram\SomeSubfolder\AnotherSubfolder\MyDll.dllのチェックサムを確認できません
この警告が、コールスタックで次のタイプのメッセージを受け取る理由です。
MyDll!AClass :: AFunction + SomeHexAddress
私のファイル構造は次のようになります。
Exe:C:\ TheProgram\program.exe
呼び出し元のdll:C\TheProgram\SomeSubfolder\caller。???
My DLLデバッグしたい:C:\ TheProgram\SomeSubfolder\AnotherSubfolder\MyDll.dll
注:シンボルファイルパスとソースファイルパスをdebug DLLが生成された場所、exeとは異なるドライブのワークスペースで)に設定します。しかし、pdb +マップファイルをコピーしましたそして、デバッグしたいdllにそれを置きます。
返事が遅れて申し訳ありません。
投稿の中で、次のエラーメッセージが表示されていることに言及しています。
*** WARNING: Unable to verify checksum for C:\TheProgram\SomeSubfolder\AnotherSubfolder\MyDll.dll
また、「DLLシンボルパスのシンボルをどこに配置しますか?」
最初の問題に対する応答を次に示します:
不一致のシンボルを識別する手順。
また、実行することができます
0:001> lmv m myDll *(and examine the Checksum)
注:チェックサムがある場合、WindbgはDLLのチェックサムをPDBのチェックサムと一致させることができます。すべての開発環境では、チェックサムを生成する方法が異なります。
ここに、PDBの配置場所に関する質問に対する回答があります
MyDll.pdbをシンボルストアに追加した場合、次の構文を使用できます。
.sympath SRV*c:\symcache*http://msdl.Microsoft.com/download/symbols
ロジャーが上で示唆したように...
ただし、PDBをローカルに持っている場合は、PDBへのパスを最初に配置してから、このようにシンボルサーバーに移動することをお勧めします。
.sympath C:\TheProgram\SomeSubfolder\AnotherSubfolder\;SRV*c:\symcache*http://msdl.Microsoft.com/download/symbols
このように、Windbgは、Symbols Serverキャッシュを使用する前に、SomSubFolder dirに対してローカルに見える必要があります。
ありがとう、アーロン
デバッガにそれらがどこにあるかを伝えることができれば、プライベートシンボルファイルをどこに置いてもかまいません。
表示されている警告 ではない スタックトレースには影響がありますが、caller.DLLおよびapp.EXEのシンボルが欠落しているという事実 する。
Windbgでのシンボルの構成(ローカル)は、次のように簡単です。
.sympath [+] path_to_pdbs
*そして
。symfix + path_to_system_pdb_store
あなたが見ている:
MyDll!AClass :: AFunction + SomeHexAddress
さて、私の質問は、あなたが立ち往生している問題は何ですか?
追伸windbgでは.mapファイルは必要ありません。
ビルドプロセスの一環として、プライベートPDBファイルとリリースされたEXE/DLLファイルをシンボルサーバーにコピーします。最も単純な場合、これは単なるUNCパスですが、HTTPを使用したアクセス用に構成できます。
出力ファイルをコピーするには、SYMSTORE.EXEプログラムを使用します。
次に、デバッガーを構成して(Visual StudioとWinDbgを使用)、そのパスを確認します。 WinDbgの場合、これを行う最も簡単な方法は、環境変数を設定することです。
__NT_SYMBOL_PATH=
SRV*C:\WebSymbols*http://msdl.Microsoft.com/download/symbols;
\\symsvr\Symbols
_
(それはすべて1行である必要があります)
これにより、WinDbgがMicrosoft Symbol Server(C:\ WebSymbolsのファイルをキャッシュする)を検索し、ローカルシンボルストア(_\\symsvr\Symbols
_)を検索するように構成されます。
また、Source Serverツールを使用してSVNの詳細をPDBファイルに保存します。つまり、特定のリリースのビルドに使用した正確なソースファイルに戻ることができます。 ...\Debugging Tools for Windows (x86)\srcsrv
を見てください。
1つのオプションは、シンボルファイルを(ieビルド出力フォルダー)のままにして、-y WinDbgを使用することです。これらのファイルを見つけるコマンドラインオプション。このアプローチを使用すると、シンボルファイルが常に最新のものになることが保証されます。
Microsoftヘルプから:
-y SymbolPath
Specifies the symbol search path. Separate multiple paths with a
semicolon (;). If the path contains spaces, it should be enclosed
in quotation marks. For details, and for other ways to change this
path, see Symbol Path.