2013-02-05 22 views
5

コードのいくつかの部分で私を悩ませているこの事がありました。何が原因なのかわかりません。VSイミディエイトウィンドウ - 名前が現在のコンテキストに存在しません

私はブレークポイントを設定したコードブロックを持っています。カーソルを使用して変数にカーソルを合わせると、通常はその変数の内容と値をナビゲートできます。

一部の変数は内容を表示できませんが、何も表示されません。私はそれらを調査しようとした場合

また、私はすぐに窓から、それは私がThe name 'temp' does not exist in the current context

私は、これは、いくつかの整数値ではなく、他、いくつかのクラスオブジェクトを起こっだろうちょうどWHYで本当にイライラしてるよう指示することはできません同じタイプのものはありません。

Visual Studioを終了して再起動しても問題は解決しません。

私は最適化なしでデバッグで実行しています。

この問題でいくつかの助けを探していますので、事前に感謝します。

コードの例を示します。特殊コードやデリゲートはありません。コードの行数がわずかであっても、プログラムのランダムな部分で発生する可能性があります。

segs2D = ConvertSegmentsTo3DLines(segs2D); 
IList<DSegment2D> segs3D = DSegment2D.Duplicate(segs2D); 
TransformSegments(segs3D, transform); 
foreach (var seg in segs3D) 
    MoveSegmentToSolid(seg, moveNormal, solid, false); 

Dictionary<double, Strategy> strategiesDic = new Dictionary<double, Strategy>(); 

double d1 = (double)(segs3D[0].GetP1Tag() ?? 0); 
double d2= (double)(segs3D[0].GetP2Tag() ?? 0); 
foreach (DSegment2D seg in segs3D) 
{ 
    d1= (double)(seg.GetP1Tag() ?? d1); 
    d2= (double)(seg.GetP2Tag() ?? d2); 
    ...Stuff 
} 

+1

動作を示すコードサンプルを投稿すると役立つかもしれません。 –

+0

@AndrewCooperコードが追加されました。 –

+0

...現在のブレークポイントはどこですか?そして、あなたはどの変数を見ることができますか、そしてどの変数を見ることができませんか? –

答えて

0

に役立ちます。私は単純化して以来、元のコードの多くを機能し、もはやこの問題を抱えていません。私はVS2012にもアップグレードしました。

0

たぶん変数は、まだあなたは(すなわち、実行がそこまで持っていなかった)ブレークポイントにヒットしているコードのブロック内で宣言または初期化されていません。例えば

、ホバー、あなたがブレークポイントにヒットしたときに次のコードブロックでbarに関して発生する説明イミディエイトウィンドウの問題の両方:

public class Whatever 
{ 
    public void DoSomething() 
    { 
     string foo = "blah"; // Breakpoint hit and execution stopped here. 

     // Do something. 

     DoSomethingElse(); 
    } 

    public void DoSomethingElse() 
    { 
     string bar = "yack"; 

     // Do something else. 
    } 
} 
また
+0

問題は間違いありません。私はブレークポイントが私が見ているコードにあることを知っています。 –

+2

おそらく、@Craig White。 1つはそう望むでしょう。 :) 私は他の人が私が言っていることを確信しているとき、特に三重ネストされたループを持つコードの場合、傍受の法則はしばしばこれらの問題の根源です。 デバッガは、変数が範囲外であると考えているようで、正しいと思われます。 – J0e3gan

4

、私はそれらを調査しようとした場合私はすぐに窓から、それは私の方法の完全な名前を使用するように

試み、現在のコンテキスト内に存在しない名前「一時」を伝えることはできません

例:

namespace.class.method();代わり

class.methodの

()。

また、即時ウィンドウには現在選択されているファイル/プロジェクトに依存しているようです。

希望は、これは、メソッドの複雑性が判明し、インデントの数が一度に問題を引き起こしていた マティアス

0

私は同様の問題がありました。私はデバッグ中だと思ったが、もう少し簡単な(しかし重要な)ステップがあった。 "Solutions Configurations"が "Debug"に設定されているところで、 "Debug"の横の下向き矢印をクリックして "Configuration Manager ..."を選択し、対応するポップアップウィンドウで "Configuration"が "Release"それを "デバッグ"に変更して "閉じる"ボタンをクリックしなければなりませんでした。そこから再実行すると、デバッグ中にすべての変数を表示することができました。

関連する問題