Web サービスを発行する Azure アプリケーションをデバッグしようとしていますが、PDB が読み込まれていても、Visual Studio 2012 がソースの表示を拒否します。これが私のセットアップです:
デバッグ > オプションと設定... > デバッグ > 一般:
- [ ] マイ コードのみを有効にする
- [ ] .NET Framework ソースのステッピングを有効にする
- [x] ソース サーバーのサポートを有効にする
- [ ] ソース ファイルが元のバージョンと正確に一致することを要求する
デバッグ > オプションと設定... > デバッグ > シンボル:
- [x] _NT_SYMBOL_PATH
- [ ] Microsoft シンボル サーバー
- [x] c:\path\to\my\PDBs
- [x] http://referencesource.microsoft.com/symbols
ソリューション プロパティ > ソース ファイルのデバッグ:
- c:\path\to\my\CSfiles\
- c:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\crt\src\
- 等
再現する手順:
- Azure アプリケーションを開発ファブリック (コンピューティング エミュレーター) にデプロイします。
- 管理者として VS2012 を開きます。
- WaWorkerHost.exe にアタッチし、シンボルの読み込みを待ち、MyModule.dll にシンボルが読み込まれていることを確認します。
- [オプション] Solution Properties... > Debug Source Files を選択し、最初のエントリとして c:\path\to\my\CSfiles\ を追加します。
- [デバッグ] > [新しいブレークポイント] > [関数でブレーク...] を選択します。
- 関数: MyClass.MyMethod。言語: C#.
- VS2012 は見つからなかったと訴えますが、ブレークポイントを追加します。
- ブレークポイントをヒットさせます。
- ヒットしたら、「call stack」の最初の項目をダブルクリックします。これは、System.ServiceModel.dll のクラスによって呼び出される MyClass.MyMethod です。
- VS2012 は、「分解を表示」オプションのみで「利用可能なソースがありません」を表示します (下の画像)。
[コール スタック] ウィンドウで、現在のメソッド (ブレークポイントにヒットしたメソッド) を右クリックし、[Symbol Load Information...] を選択すると、最後の行に次のように表示されます。
c:\path\to\my\PDBs\MyModule.pdb: Symbols loaded.
DEBUG > Windows > Modules を開くと、モジュールが正しく表示されます。
- パスは正しいです。
- 最適化 = いいえ。
- ユーザーコード = N/A (他のすべてと同様)。
- シンボル ステータス = シンボルが読み込まれました。
- シンボル ファイル = c:\path\to\my\PDBs\MyModule.pdb (正しい)。
はい、アプリケーションは完全なデバッグ情報を使用してビルドされました。このツールを使用して PDB を既にダンプしており、ソース コードが正しい場所に表示されます。
興味深いことに、.NET Framework のすべてのソースを確認できます。自分のソースを見ることができず、本当にイライラしています。
user-dir \Documents\Visual Studio 2012\Projectsから .suo ファイルを既に削除しましたが、役に立ちませんでした。常に実行可能ファイルにアタッチすると、新しい新しいソリューションが自動的に作成されるため、役に立たないと思います。