2012-03-15 3 views
19

コードをデバッグ/ステップ実行しているときに時計の変数を調べようとすると、関数評価のタイムアウトを示すすべての内部変数に対してエラーが発生します。デバッグ/ステッピングで変数を調べるときに機能評価がタイムアウトする

これはなぜ、どのように回避するのですか?私のコードをデバッグする能力に影響を与えます。

これはVS2010 Premiumの範囲内です。

答えて

18

この問題の最も一般的な原因は、プロパティの暗黙の評価またはCLR評価スレッドで問題を引き起こすToStringメソッドです。これを確認するには、暗黙の評価を無効にします。

  • ツール - >オプション
  • デバッグ
  • のチェックを外し、「特性評価およびその他の暗黙の機能を有効に呼び出す」次に、あなたのシナリオを再起動し、それが動作するかどうかを確認

を。

+0

これは私の再帰呼び出しであることが判明しました。プロパティのget()メソッドでは、プライベートバッキングフィールドの代わりにpublicプロパティを返していました。おっとっと。 – Induster

3

ビジュアルスタジオでは、高価な作業を行うために時間がかかると、この値を取得するためにプロパティgetterを実行します。

public class foo 
{ 
    private object lockObject = new object(); 
    public int bar 
    { 
     get 
     { 
      lock(lockObject){ 
       return 42; 
      } 
     } 
    } 
    public int aMethod() 
    { 
     lock(lockObject) 
     { 
      var a = this.bar; 
      return a*2; //insert a break point here 
      } 
     } 
} 

デバッガは、そうすることが、それはロックオブジェクトを取得する必要があるため、バーのプロパティを評価することはできませんaMethodでreturn文にブレークポイントを追加した場合、それはできません。考えますブレークポイントがアクティブな間にプログラムがそのロックを永久に保持するので、これを行うことができます

関連する問題