2010-02-19 30 views
18

Quiero establecer un punto de interrupción en una línea determinada en C# código cuando alguna otra variable es igual a un valor específico, digo:punto de interrupción condicional en Visual Studio

MyStringVariable == "LKOH" 

¿Cómo puedo hacer eso?

he intentado hacer clic derecho sobre el icono de punto de interrupción -> Condición y después se pasan MyStringVariable == "LKOH" y Visual Studio dijo que no puede evaluarlo.

+0

Me normalmente modificar el código e inyectar código como si (MyStringVariable = "LKOH") { int a = 1; // código ficticio para establecer el punto de interrupción } –

+0

EDITAR - cambiar = a ==. Esto fue solo un error tipográfico. Por supuesto que utilicé == en el depurador –

+0

Oh, otra pista. En realidad, estoy usando una propiedad. Mi verdadera expresión es Exchange.Name == "LKOH", donde Nombre es propiedad. Puede ser un depurador no puede trabajar con propiedades? –

Respuesta

25

Código de ejemplo:

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 
} 

Estado: mivar == "barra"

funciona bien.

7

Al igual que en el código, es necesario utilizar:

MyStringVariable == "LKOH" 

El doble es igual a es la clave. Sin él, está diciendo que no puede evaluar porque su expresión no evalúa a un booleano.

1

La variable que está probando debe estar en el alcance en el punto de interrupción.

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

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

Usted debe ser capaz de hacer este trabajo. ¿Estás usando el nombre de la instancia de Exchange en la condición? La condición debe ser algo así como myExchange.Name == "LKOH" no Exchange.Name == "LKOH".

Por cierto, usando el operador de asignación = en lugar del operador de igualdad == funcionará, pero establecerá la propiedad y desperdiciará 1/2 hora de su tiempo averiguando qué demonios está pasando. Cometí este error ayer.

1

En mi caso, olvidé que estaba depurando una aplicación VB.

En igualdad de VB es = no == al igual que muchos otros idiomas, así mi punto de interrupción condicional necesitaba estar myString = "someValue" no myString == "someValue"

Cuestiones relacionadas