基本的に私がこれをやりたいのは、pdbファイルにソースファイルの場所が含まれていることです(例C:\dev\proj1\helloworld.cs
)。別の場所(例)が含まれるようにそのpdbファイルを変更することは可能\more\differenter\location\proj1\helloworld.cs
ですか?
4 に答える
Windows 用デバッグ ツールのソース インデックス作成機能を使用できます。これにより、ソース リポジトリ内のファイルの適切なリビジョンへの参照が、PDB ファイル内の代替ストリームとして保存されます。
pdbファイルに埋め込まれているパスについてより一般的なものを探している場合は、最初にMS-DOSsubst
コマンドを使用して、特定のフォルダーをドライブ文字にマップできます。
subst N: <MyRealPath>
次に、N:ドライブを基準にしてプロジェクトを開き、再構築します。PDBファイルはN:のソースファイルを参照します。これで、特定のソースファイルのセットをどこに配置してもかまいません。ただし、後でルートディレクトリを作成したときと同じように、ルートディレクトリを「N:」と呼ぶ場合に限ります。
この方法は、JohnRobbinsの優れた著書「Microsoft.NETおよびMicrosoftWindows用のアプリケーションのデバッグ」で推奨されています。
自分のマシンでビルドしていない実行可能ファイルで発生したクラッシュ ダンプをデバッグするために、これに対する答えを見つけたかったので、PDB で参照されているソース コードへのパスと PDB へのパスが無効でした。実行可能ファイルで参照されます。
あちこち検索してうまくいくものを見つけられなかった後、実行可能ファイルと PDB をクラッシュ ダンプ ファイルと一緒に (つまり、同じディレクトリに) 配置し、VS でクラッシュ ダンプを開いて実行すると、VS が PDB を見つけて使用することを発見しました。 /EXE ローカル。さらに、コール スタック内のエントリをクリックすると、ソース コードの場所も要求されます。関連するソース コードを指定すると、すべて正常に動作します。これはすばらしいことです。
とにかく、うまくいけば、これは他の誰かを助ける... :)
On Freundがすでに指摘しているように、それは確かに可能です。ただし、デバッグ中にソースを見つけてロードできるようにするためだけの場合は、それに応じてソースパスを設定することをお勧めします。デバッガーで設定されると、PDB内のすべてのハードコードされたパスを前提とします。
windbgの場合(たとえば):
.srcpath + path_to_source_rootまたはこれ(リモートでデバッグしている場合):
.lsrcpath + path_to_source_root