SSブログ

VSはデバッグ情報(pdbファイル)をどのようにして見つけるか [プログラミング]

Visual Studio で c/c++ プロジェクトをビルドすると、デバッグ情報が pdb ファイルに格納されます。

VS内でビルド→デバッグしているときはいいのですが、実環境に近い環境で実行→assert→デバッグしたいときに、VSがデバッグ情報を見つけてもらえるときと、そうでないときがあったりして戸惑います。

一体どうなっているの~?

まあマニュアル読め。

http://msdn2.microsoft.com/ja-jp/library/yd4f8bd1(VS.80).aspx

Visual Studio デバッガは、EXE ファイルや DLL ファイル内の PDB へのパスに従って、project.PDB ファイルを検索します。指定された場所に PDB ファイルが見つからないか、または (プロジェクトが別のコンピュータに移動されたなど) パスが無効である場合は、EXE ファイルが格納されているパスを検索します。このパスは、[オプション] ダイアログ ボックス ([デバッグ] - [シンボル]) で指定されたシンボル パスです。デバッガでは、デバッグ対象のバイナリと一致しない PDB は読み込みません。

太線はオレによる。

EXE/DLLファイルにpdbファイルへのパスが書かれているんですねえ。同じPCであれば、ビルド後にEXE/DLLだけをコピーしても大丈夫なようです。

見つからない場合の説明が?ですな。「EXEファイルが格納されているパスを検索します。このパスは~」って、あれれ?格納されているパスと、オプションで設定したパスって意味?

こういうときは翻訳を疑え。

http://msdn2.microsoft.com/en-us/library/yd4f8bd1(VS.80).aspx

The Visual Studio debugger uses the path to the PDB in the EXE or DLL file to find the project.PDB file. If the debugger cannot find the PDB file at that location or if the path is invalid (for example, if the project was moved to another computer), the debugger searches the path containing the EXE, the symbol paths specified in the Options dialog box (Debugging folder, Symbols node). The debugger will not load a PDB that does not match the binary being debugged.

お、ja-jpをen-usにすれば英語版コンテンツが出てくるのか。

最後の文は the debugger searches A, B. となってて、これは、Aが「exeファイルが格納されているパス」、Bが「オプションで~」じゃなかろうか。

とすると(違ってたらごめんなさい)

  • EXE/DLLに埋め込まれたpdbファイルへのパス
  • EXEファイルのある場所
  • VSのオプションで設定したpdbファイル置き場

の順に検索することになります。

もういっちょ関連情報

http://support.microsoft.com/kb/121366/en-us

あれれ、こっちには、埋め込まれたパスで見つからなければカレントディレクトリを探す、と書いてある。ああ、情報が古いですねえ。VC6までの話らしい。

まとめると、

  • 同じPCであればpdbファイルの場所を意識する必要はない。EXE/DLLに埋め込まれた絶対パスからロードしてもらえる。
  • 違うPCであれば、同じディレクトリに置くか、VSのオプションで指定したpdbファイル置き場に置く。

でも、後者ってほとんど意味ないよな。ソースコードなしにデバッグすることなんてないし、ソースコードがあるならその場でビルドすればよいし。

ソースコード見えなくても、型情報があると便利な場合があるのかしらん?あるいは超大規模プロジェクトでビルドに数時間かかるとかいう場合なんかかな?

とりあえずこんなところで。


nice!(1)  コメント(0) 

nice! 1

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

subversionが遅いlibpng 1.2.20 リリース ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。