web-dev-qa-db-fra.com

Point d'arrêt conditionnel dans Visual Studio

Je souhaite définir un point d'arrêt sur une certaine ligne de code C # lorsqu'une autre variable est égale à une valeur spécifique, par exemple:

MyStringVariable == "LKOH"

Comment puis je faire ça?

J'ai essayé de cliquer avec le bouton droit sur l'icône du point d'arrêt -> Condition, puis de saisir MyStringVariable == "LKOH" et Visual Studio a déclaré qu'il ne pouvait pas l'évaluer.

18
Captain Comic

Exemple de code:

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
}

Condition: myvar == "bar"

Fonctionne bien.

25
Hans Passant

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

vous aurez besoin de l'espace de noms System.Diagnostics

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

35
Danny G

Tout comme dans le code, vous devez utiliser:

MyStringVariable == "LKOH"

Le double égal est la clé. Sans lui, cela signifie qu'il ne peut pas évaluer parce que votre expression n'évalue pas un booléen.

7
David Boike

Vous devriez être capable de faire ce travail. Utilisez-vous le nom d'instance Exchange dans la condition? La condition devrait être quelque chose comme myExchange.Name == "LKOH" pas Exchange.Name == "LKOH".

En passant, utiliser l'opérateur d'assignation = au lieu de l'opérateur d'égalité == fonctionnera, mais il définira la propriété et vous fera perdre une demi-heure de votre temps à comprendre ce qui se passe. J'ai commis cette erreur hier.

5
Jamie Ide

Dans mon cas, j'ai oublié que je déboguais une application VB.

Dans VB, l'égalité est = et non pas == comme beaucoup d'autres langues; mon point d'arrêt conditionnel devait donc être myString = "someValue" et non pas myString == "someValue".

1
Nicholas V.

La variable que vous testez doit être dans la portée au point d'arrêt.

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

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