web-dev-qa-db-ja.com

VisualStudioの条件付きブレークポイント

他の変数が特定の値に等しい場合、C#コードの特定の行にブレークポイントを設定したいと思います。

MyStringVariable == "LKOH"

どうやってやるの?

ブレークポイントアイコン->条件を右クリックしてからMyStringVariable == "LKOH"と入力しようとしましたが、VisualStudioはそれを評価できないと言いました。

18
Captain Comic

サンプルコード:

static void Main(string[] args) {
  string myvar;
  for (int ix = 0; ix < 10; ++ix) {
    if (ix == 5) myvar = "bar"; else myvar = "foo";
  }    // <=== Set breakpoint here
}

条件:myvar == "bar"

うまく機能します。

25
Hans Passant

if (MyStringVariable == "LKOH") Debugger.Break();

system.Diagnostics名前空間が必要です

http://msdn.Microsoft.com/en-us/library/system.diagnostics.debugger.break.aspx

36
Danny G

コードの場合と同様に、次を使用する必要があります。

MyStringVariable == "LKOH"

二重等号が重要です。それがないと、式がブール値に評価されないため、評価できないと言っています。

7
David Boike

あなたはこの仕事をすることができるはずです。条件でExchangeインスタンス名を使用していますか?条件は、myExchange.Name == "LKOH"ではなくExchange.Name == "LKOH"のようにする必要があります。

ちなみに、等式演算子=の代わりに代入演算子==を使用しても機能しますが、プロパティが設定され、何が起こっているのかを理解するのに30分も無駄になります。私は昨日この間違いをしました。

5
Jamie Ide

私の場合、VBアプリケーションをデバッグしていることを忘れていました。

VB等式は、他の多くの言語のように=ではなく==であるため、条件付きブレークポイントはmyString = "someValue"ではなくmyString == "someValue"である必要がありました。

1
Nicholas V.

テストする変数は、ブレークポイントのスコープ内にある必要があります。

var x = "xxx";
{ 
  var y = "yyy";
}

brak(); // x is in scope, y isn't
1
AxelEckenberger