5

Web サービスを発行する Azure アプリケーションをデバッグしようとしていますが、PDB が読み込まれていても、Visual Studio 2012 がソースの表示を拒否します。これが私のセットアップです:

デバッグ > オプションと設定... > デバッグ > 一般:

  • [ ] マイ コードのみを有効にする
  • [ ] .NET Framework ソースのステッピングを有効にする
  • [x] ソース サーバーのサポートを有効にする
  • [ ] ソース ファイルが元のバージョンと正確に一致することを要求する

デバッグ > オプションと設定... > デバッグ > シンボル:

ソリューション プロパティ > ソース ファイルのデバッグ:

  • c:\path\to\my\CSfiles\
  • c:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\crt\src\

再現する手順:

  1. Azure アプリケーションを開発ファブリック (コンピューティング エミュレーター) にデプロイします。
  2. 管理者として VS2012 を開きます。
  3. WaWorkerHost.exe にアタッチし、シンボルの読み込みを待ち、MyModule.dll にシンボルが読み込まれていることを確認します。
  4. [オプション] Solution Properties... > Debug Source Files を選択し、最初のエントリとして c:\path\to\my\CSfiles\ を追加します。
  5. [デバッグ] > [新しいブレークポイント] > [関数でブレーク...] を選択します。
  6. 関数: MyClass.MyMethod。言語: C#.
  7. VS2012 は見つからなかったと訴えますが、ブレークポイントを追加します。
  8. ブレークポイントをヒットさせます。
  9. ヒットしたら、「call stack」の最初の項目をダブルクリックします。これは、System.ServiceModel.dll のクラスによって呼び出される MyClass.MyMethod です。
  10. 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 ファイルを既に削除しましたが、役に立ちませんでした。常に実行可能ファイルにアタッチすると、新しい新しいソリューションが自動的に作成されるため、役に立たないと思います。

4

1 に答える 1

0

Microsoft が .net のすべてのコードをリリースしたと思っていました。しかし、明らかに ServiceModel アセンブリはまだ閉じられています。

ServiceModel は、コードを呼び出す前に何らかの魔法を実行し、デバッガーを混乱させる可能性があります。

しかし、あなたの問題については、サービスが古いバージョンの dll を実行しているようです。

「元のファイルと完全に一致するようにソースファイルを要求する」設定のチェックを外して、ブレークポイントで壊れるかどうかを確認してください。その段階でブレークポイントに到達した場合は、dll の展開中に問題が発生したことを意味します。

resharper のような逆コンパイラを試して、動作するかどうかを確認しましたか?

于 2013-10-30T07:13:05.360 に答える