「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
- 一致が望ましいが、ビルド環境と開発環境のソースファイルパスが一致しているケースは稀。
- ビルド環境と開発環境のソースファイルパスを一致させる方法について調査した。
- 結論としては、[デバッグ ソース ファイル]に指定したフォルダ以下に
ビルド環境と構成を一致させたソースファイルが存在すれば問題ない。
PDBとデバッガ †
概要 †
- シンボル ファイルとも呼ばれるプログラム データベース (.pdb) ファイル
- ソース ファイルの識別子を、実行可能ファイルで使用される識別子に対応付ける。
- ソース コード内のステートメントを実行可能ファイル内の実行命令に対応付ける。
- デバッガはこの情報を使用して以下の 2 つを決定する。
- Visual Studio IDE に表示されるソース ファイルと行番号。
- 設定されたブレークポイントによって実行可能ファイル内で停止する位置。
- また、シンボル ファイルには以下が格納されている。
- ソース ファイルの元の場所、
- および必要に応じてソース ファイルを取得できるソース サーバの場所
シンボル ファイルの検索 †
[ツール]、[オプション]、[デバッグ]、[シンボル] で、検索パスとシンボル サーバを指定できる。
- [シンボル ファイル (.pdb) の場所]にURL またはディレクトリ パスを入力
- [このディレクトリにシンボルをキャッシュ]にディレクトリ パスを入力
- 次のシンボルを自動的に読み込む
- [除外されていないすべてのモジュール]オプション - [除外されるモジュールの指定]リンク
- [指定したモジュールのみ]オプション - [モジュールの指定]リンク
- [起動時にシンボルが見つからないとき警告 (ネイティブのみ)]
- [DLL エクスポートを読み込む]
ソース ファイルの検索順 †
Visual Studioが以下の順序で、ソース ファイルを検索して解決するもよう。
- デバッガーを実行している Visual Studio インスタンスの IDE (devenv.exe) が開いているファイル
- Visual Studio インスタンスで開いているソリューション内のファイル
- Visual Studio ソリューションの [共通プロパティ] - [デバッグ ソース ファイル] ページで指定したディレクトリ。
- モジュールの *.pdbファイル に含まれるソース情報。
場合によって、
- ソース サーバへのコマンド
- モジュールがビルドされたソース ファイルの場所
なお、ここでファイルが見つからなかった場合、
- ..\に遡りながらファイルを探し、
- 見つからなかった場合、ファイルが見つからない旨のページを表示し、手動での指定が求められる。
ファイルが指定された場合は、指定したフォルダのパスが自動的に [デバッグ ソース ファイル] へ追加される。
以降、[デバッグ ソース ファイル]で指定したフォルダから正しく構成されていれば問題なく参照可能になる。
シンボル サーバ †
- symsrv プロトコルを実装するシンボル サーバからシンボル ファイル(PDB)をダウンロードできる。
- ダンプやライブデバッグでシンボルを使用する場合は、シンボル サーバを使用すればよいが、
F5実行のデバッグでシンボルを使用する場合は、下記のソース サーバを使用する。
ソース サーバ †
概要 †
- ソース サーバは、ファイルの要求を受け取り、実際のファイルを返す。
- ソース サーバは、srcsrv.dll という名前の DLL ファイルを使用して実行される。
- ソース サーバでは、ソースファイル以外に、以下も読み取る。
- ソース コードのレポジトリへのポインタを含むアプリケーションの .pdb ファイル
- ポジトリからソース コードを取得するときに使用するコマンド
- .pdb ファイルには任意のコマンドを埋め込むことができる。
- このコマンドは、セキュリティ リスク的な観点から、制限できる。
- srcsrv.ini というファイルに許可する(≒実行する)コマンドを列挙し、
srcsrv.dll および devenv.exe と同じディレクトリに配置する。
- srcsvr.ini ファイルにないコマンドを実行しようとすると、
確認のダイアログ ボックスが表示される。
有効化 †
ソース サーバの使用を有効にするには
- 前のセクションで説明したセキュリティ手法で、コンパイルを完了します。
- [ツール] メニューの [オプション] をクリック。
- [オプション] ダイアログ ボックスが表示。
- [デバッグ] ノードで、[全般] を選択。
- [ソース サーバー サポートを有効にする] チェック ボックスをオン
- [ソース サーバー サポートを有効にする] オプションを選択
- (省略可能) 必要な子オプションを選択
- [ソース サーバー診断メッセージを出力ウィンドウに表示する]
- [部分信頼アセンブリのソース サーバーを許可する (マネージのみ)]
- [信頼されていないソース サーバー コマンドを常に確認なしで実行する]
デバッグできない場合 †
- ステップ・インする際に、
「ソースファイルがモジュールがビルドされたときのものと異なります。デバッガでこのファイルを使用しますか?」
- ブレーク・ポイントを設定した際に、
「ブレークポイントは、現在の設定ではヒットしません。ソースコードが元のバージョンと異なります。」
というメッセージが表示されデバッグできない場合がある。
この場合は、
の手順に従って、
デバッグ実行が可能な設定に変更することができる。
参考 †
Tags: :.NET開発