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つすべてのポイントを破りますが、Visual Studio 2012で値を表示できません。結果のみがローカルウィンドウに表示され、RadianまたはDegreeという変数はありません。
たとえば、ラジアン変数の監視を追加すると、赤い十字アイコンが付いた次のメッセージが表示されます。
ラジアン-「ラジアン」という名前は現在のコンテキストに存在しません
ローカル変数がJITコンパイラーによって最適化されている可能性があります。 Visual Studioを使用しているため、構成をデバッグに切り替えて再構築できる場合があります。
そうでない場合は、最適化を無効にして追跡情報を生成するようにJITコンパイラーを構成できます- 構成の設定方法についてはこちら を参照してください。これにより、デバッガーをプロセスにアタッチするときにローカル変数を表示できるようになります。
VS2012で、デバッグモード中に変数が「消える」別のシナリオに遭遇しました。
これがないことを確認してください:
if(false)
{
.
}
else
{
//Code here will be optimized and variables will not be available.
}
リリースビルド(デバッグモードではなくリリースモード)でデバッグしようとすると、このエラーが発生します。ソリューション構成をデバッグ(任意のCPU)に変更すると、イミディエイトウィンドウに変数値が表示されます。
ソリューション構成をデバッグ(任意のCPU)に変更しましたが、それは問題ではありませんでした。 Visual Studio 2017にアップグレードした後、デバッグ中であると思いましたが、もう1つの単純な(しかし重要な)ステップがありました。 (そして、ほとんどの人にとってそれはおそらく明白ですが、私はそれを逃しました。)「ソリューション構成」が「デバッグ」に設定されている場合は、「デバッグ」の横にある下矢印をクリックし、「構成マネージャー」を選択してから、対応するポップアップウィンドウの[構成]はまだ[リリース]に設定されていました。これを[デバッグ]に変更して[閉じる]ボタンをクリックする必要がありました。そこから再実行すると、デバッグ中にすべての変数を表示できました。