2008-08-26 16 views

答えて

11

Windows用デバッグツールのソースインデックス機能を使用すると、ソースリポジトリ内のファイルの適切なリビジョンへの参照がPDBファイルの代替ストリームとして保存されます。

+3

http://msdn.microsoft.com/en-us/library/ms680641.aspx –

+0

PDBを持つことGOLDあるソースコントロールから直接インデックス付けができます!私はすべてのオープンソースプロジェクトがこれをやり始めてくれることを願っています。 – Trumpi

+1

これはミントです。私はこの機能を知らなかった! この記事は便利です: http://entland.homelinux.com/blog/2006/07/06/setting-up-a-symbol-server/ – Pete

7

pdbファイルに埋め込まれたパスについてより一般的なものを探している場合は、最初にMS-DOS substコマンドを使用して、特定のフォルダをドライブ文字に割り当てることができます。

subst N: <MyRealPath> 

N:ドライブに対してプロジェクトを開き、再構築します。 PDBファイルはN:のソースファイルを参照します。今度は、特定のソースファイルセットをどこに置いても問題ありません。それは、作成したときと同じように、ルートディレクトリ "N:"を呼んでいる限りです。

この方法は、John Robbinsの優れた本Debugging Applications for Microsoft .NET and Microsoft Windowsで推奨されています。

1

フロインドが既に指摘しているように、確かに可能です。 しかし、デバッグ中にソースを見つけてロードできるようにするだけであれば、それに対応してソースパスを設定する方が良いでしょう。デバッガで設定されると、PDB内のすべてのハードコーディングされたパスがプリエンプトされます。 (例えば)のWinDbgで

.srcpath + path_to_source_root
またはこの(場合にリモートでデバッグしている):
.lsrcpath + path_to_source_root

2

私が探していました私のマシンでビルドしていない実行ファイルで発生したクラッシュダンプをデバッグするために、これに対する答え。したがって、PDBで参照されているソースコードへのパスが無効で、 PDBは実行可能ファイルで参照されます。

実行して何かを見つけることができなかった場合、実行可能ファイルとPDBをクラッシュダンプファイル(つまり同じディレクトリ)の上に置き、VSでクラッシュダンプを開いて実行すると、ローカルでPDB/EXEを使用してください。さらに、コールスタック内のエントリをクリックすると、ソースコードの場所を入力するよう求められます。関連するソースコードを指すと、すべて正常に動作します。これは素晴らしいことです!

とにかく、うまくいけば、これは他の誰か... :)

関連する問題