2012-11-22 27 views
17

2つの一時変数が挿入されていて、その値を表示したいのですが、できません。私は他の場所に配置することでそれを解決することができましたが、なぜこの動作が存在するのか興味があります。デバッグ中に現在のコンテキストに変数が存在しません

私は3つのポイントをすべて壊していますが、Visual Studio 2012に値を表示できません。結果はローカルウィンドウに表示され、RadianまたはDegreeという変数はありません。私は、例えばラジアン変数のウォッチを追加する場合

は、私は、赤い十字のアイコンと、このメッセージが表示されます。

ラジアン - 「ラジアン」は現在のコンテキスト内に存在しない名前

答えて

52

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

そうでない場合、最適化を無効にしてトラッキング情報を生成するようにJITコンパイラを構成できます。here on how to set the configurationを参照してください。これにより、デバッガをプロセスにアタッチするときにローカル変数を参照できるようになります。

+2

ありがとうございます。それは、彼らにブレークポイントを持っているコードを最適化するためにビジュアルスタジオから愚かなようだ。 D –

+6

Configuration Managerをリリースからデバッグに変更しました。現在は動作しています。 – riaandelange

19

私は変数がデバッグモード中に「消える」になりVS2012で別のシナリオに遭遇しました:デバッグしようとしている場合は

if(false) 
    { 
    . 
    } 
else 
    { 
    //Code here will be optimized and variables will not be available. 
    } 
+0

質問/回答の詳細については、http://stackoverflow.com/aboutを参照してください。そう。あなたの投稿は質問に答えていません。これはコメントです。評判を上げると追加できます:http://stackoverflow.com/faq#reputation –

+9

@RadimKöhler、あなたは間違っています。彼がここに置いた答えは、私の日を救った、私はこの問題を解決するために夢中だったし、それはsimplesを解決する。長いブロックを避けて別のポイントをテストするためにコードにif(false)を追加しました。私の間違いはishayleの説明と同じです –

+5

@DiegoMendesそれがあなたに役立ったら、**間違っていました!**それを見るのは素晴らしいです... –

6

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

をリリースビルド(デバッグモードではなくリリースモード)では、このエラーが発生します。あなたのソリューションの設定をDebug(Any CPU)に変更すると、即値ウィンドウで変数の値を見ることができます。

+0

私には何が起こったのですか?すべてのコードが最適化されるように、デバッグ中のすべてのプロジェクトがリリースされるということでした...私はあなたの答えを見て、最近私が持っていた多くの質問をクリアするまで、 – Asken

0

解決策の設定をデバッグ(任意のCPU)に変更しましたが、それは問題ではありませんでした。 Visual Studio 2017にアップグレードした後、私はDebugにいたと思ったが、もう少し簡単な(しかし重要な)ステップがあった。 (そして、おそらくほとんどの人には分かりましたが、私はそれを逃しました)。 "Solutions Configurations"が "Debug"に設定されているところで、 "Debug"の横の下向き矢印をクリックして "Configuration Manager ..."を選択し、ポップアップウィンドウの "Configuration"がまだ "Release"に設定されていました - 私はそれを "Debug"に変更し、 "Close"ボタンをクリックしなければなりませんでした。そこから再実行すると、デバッグ中にすべての変数を表示することができました。

関連する問題