27

2つの一時変数を挿入し、それらの値を確認したいのですが、表示できません。別の場所に配置することで解決できますが、なぜこの動作が存在するのか興味があります。

   public float Value
    {
        get
        {
            float result = Memory.ReadFloat(Address);

            double Radian = Math.Round(result, 2); // **BREAK POINT HERE**
            double Degree = Math.Round(Math.Round((double)(result * 180 / Math.PI)), 2); // **BREAK POINT HERE**

            return result; // **BREAK POINT HERE**
        }
    }

3つのポイントすべてを破りましたが、VisualStudio2012に値を表示させることができません。結果のみがローカルウィンドウに表示され、ラジアンまたは度と呼ばれる変数はありません。

たとえば、ラジアン変数の時計を追加すると、赤い十字アイコンが付いた次のメッセージが表示されます。

ラジアン-「ラジアン」という名前は現在のコンテキストには存在しません

4

5 に答える 5

65

ローカル変数がJITコンパイラによって最適化されている可能性があります。Visual Studioを使用しているため、構成をデバッグと再構築に切り替えることができる場合があります。

そうでない場合は、最適化を無効にして追跡情報を生成するようにJITコンパイラーを構成できます。構成の設定方法については、こちらを参照してください。これにより、デバッガーをプロセスにアタッチするときにローカル変数を確認できるようになります。

于 2012-11-22T21:08:38.550 に答える
21

VS2012で、デバッグモード中に変数が「消える」別のシナリオに遭遇しました。

あなたがこれを持っていないことを確認してください:

if(false)
   {
   .
   }
else
   {
   //Code here will be optimized and variables will not be available.
   }
于 2014-01-22T07:28:53.547 に答える
14

リリースビルド(デバッグモードではなくリリースモード)でデバッグしようとすると、このエラーが発生します。ソリューション構成をデバッグ(任意のCPU)に変更すると、イミディエイトウィンドウに変数値が表示されます。

于 2016-10-20T20:05:41.017 に答える
2

私は.NETStandardプロジェクトを持っていましたが、私にとってうまくいったのは次のことでした。

  • プロジェクトのプロパティ。
  • [ビルド]タブ。
  • 詳細ボタン(右下にあります)。
  • 「デバッグ情報」オプションを完全に変更します。
  • リストアイテム

「ポータブル」に設定されていました。これを「フル」に変更すると、ウォッチウィンドウとイミディエイトウィンドウで変数を再び表示できるようになりました。

関連性があるかどうかはわかりませんが、最近、プロジェクトをPCLから.NETStandardに変換しました。たぶん、翻訳で何かが失われました。

于 2019-09-11T16:47:44.220 に答える
0

ソリューション構成をデバッグ(任意のCPU)に変更しましたが、それは問題ではありませんでした。Visual Studio 2017にアップグレードした後、私はデバッグ中だと思いましたが、もう1つの簡単な(しかし重要な)ステップがありました。(そして、それはおそらくほとんどの人にとって明らかですが、私はそれを見逃しました。)「ソリューション構成」が「デバッグ」に設定されている場合、「デバッグ」の横にある下矢印をクリックして「構成マネージャー…」を選択し、対応するもので選択する必要がありました。ポップアップウィンドウの「構成」はまだ「リリース」に設定されていました–これを「デバッグ」に変更して「閉じる」ボタンをクリックする必要がありました。そこから再実行すると、デバッグ中にすべての変数を表示できました。

于 2018-03-06T20:23:33.750 に答える