MSのSymbol Serverを使用した.NETコードのデバッグ-VSは変数の値を表示しません

StackOverflow https://stackoverflow.com/questions/294738

  •  08-07-2019
  •  | 
  •  

質問

.NET用のMicrosoftデバッグシンボルを使用してASP.NET Webサイトコードをデバッグすると、.NETフレームワークコード(もちろんMicrosoft Symbol Serverから提供されます。VS2008から情報を取得するように指示しました)

Cannot obtain value of local or argument 'cookie' as 
it is not available at this instruction pointer, possibly because 
it has been optimized away.

私が使用しているコードは、最適化されたコンパイル済みコードを使用しているようです。その場合、最適化しないように指示できますか? DEBUG構成になっています。デバッグできないため、非常にイライラします。コードをステップ実行するときにローカル変数の値を表示/取得できないためです。

手がかり/考えはありますか

役に立ちましたか?

解決

Shawn Burkeは、これを無効にする方法を彼のブログ

最初に、JIT最適化なしでVisual StudioをロードするCMDを作成します。

set COMPLUS_ZapDisable=1
cd /d "%ProgramFiles%\Microsoft Visual Studio 9.0\Common7\ide\"
start devenv.exe
exit

Visual Studioプロジェクトで、次の手順を実行します。

1)プロジェクトファイルを右クリックして[プロパティ]を選択します

2)「デバッグ」を選択します;タブを開き、[Visual Studioホスティングプロセスを有効にする]のチェックを外します

3)デバッガーでアプリケーションを起動します。

他のヒント

通常の.Netアプリケーションでは、開始バイナリの横にある.INIファイルでJIT最適化の使用を無効にできます。これを実現する方法へのリンクは次のとおりです

http:// blogs.msdn.com/jaredpar/archive/2008/08/29/disabling-jit-optimizations-while-debugging.aspx

ASP.Netのデバッグは少し異なりますが、これがうまくいくかどうかはわかりません。軽量Webサーバー(cassini)を使用してローカルでデバッグしている場合、このトリックをCassini自体に適用できます。 IIS内でWebサーバーで直接デバッグしている場合、このトリックを機能させる方法がわかりませんが、うまくいけば正しい方向に導くことができます。

多くの調査の結果、この「COMPLUS_ZapDisable」を作成する方法を見つけることができました。 IIS7 / Windows 7 x64でIISがホストするアプリケーションにアタッチするときのテクニックは機能します。

私の場合、Reflector Proで作成されたシンボルを使用していますが、OPが尋ねたMicrosoftのシンボルでも機能すると思います。

トリックは、その環境変数を設定する適切な場所を見つけて、w3wp.exeがその設定を有効にして起動されるようにすることです。これを行うには、「COMPLUS_ZAPDISABLE」という文字列キーを追加します; " HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment"のレジストリに移動します。キー値を「1」に設定すると、うまくいくはずです。本番環境ではこれをしないでください=)

この投稿の著者であるClive Tongに称賛を送ります私を正しい方向に向けてくれたRed Gateから。

.NETフレームワークのコードは最適化されているため、最適化されたコードには存在しない可能性があるため、すべての変数を表示することはできません。 .NETフレームワーク自体の内部でデバッグしようとしていると思います。残念ながら、それに対してできることはほとんどありません。

最後に、このソリューションは、aspnet_wp.exe Visual Studio 2008、.NET framework 2.0に接続するときに機能しました。プロジェクトのプロパティ、[ビルド]タブ、[詳細設定]ボタンの順に移動します->出力デバッグ情報を「フル」に設定します。これが誰かの助けになることを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top