Ponto de interrupção condicional no Visual Studio
-
21-09-2019 - |
Pergunta
Quero definir um ponto de interrupção em uma determinada linha no código C# quando alguma outra variável é igual a um valor específico, digamos:
MyStringVariable == "LKOH"
Como eu posso fazer isso?
Tentei clicar com o botão direito do mouse no ícone do ponto de interrupção -> condição e depois digitei MyStringVariable == "LKOH"
E o Visual Studio disse que não pode avaliá -lo.
Solução
Código de amostra:
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
}
Condição: myvar == "bar"
Funciona bem.
Outras dicas
if (MyStringVariable == "LKOH") Debugger.Break();
você precisará de namespace system.diagnostics
http://msdn.microsoft.com/en-us/library/system.diagnostics.debugger.break.aspx
Assim como no código, você precisa usar:
MyStringVariable == "LKOH"
Os dois equals são a chave. Sem ele, está dizendo que não pode avaliar porque sua expressão não se avalia em um booleano.
Você deve ser capaz de fazer isso funcionar. Você está usando o nome da instância do Exchange na condição? A condição deve ser algo como myExchange.Name == "LKOH"
não Exchange.Name == "LKOH"
.
A propósito, usando o operador de atribuição =
em vez do operador de igualdade ==
Funcionará, mas ele definirá a propriedade e desperdiçará meia hora do seu tempo descobrindo o que diabos está acontecendo. Eu cometi esse erro ontem.
A variável que você está testando precisa estar no escopo no ponto de interrupção.
var x = "xxx";
{
var y = "yyy";
}
brak(); // x is in scope, y isn't
No meu caso, esqueci que estava depurando um aplicativo VB.
Na igualdade de VB é =
não ==
Como muitos outros idiomas, assim meu ponto de interrupção condicional precisava ser myString = "someValue"
não myString == "someValue"