Условная точка останова в Visual Studio

Я хочу установить точку останова на определенной строке в коде C#, когда какая-то другая переменная равна определенному значению, скажем:

MyStringVariable == "LKOH"

Как я могу это сделать?

Я попытался щелкнуть правой кнопкой мыши значок точки останова - > условие, а затем набрал MyStringVariable == "LKOH" и Visual Studio сказал, что не может его оценить.

6 ответов


пример кода:

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"

работает хорошо.


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

вам понадобится система.Пространство имен диагностики

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


Как и в коде, вам нужно использовать:

MyStringVariable == "LKOH"

двойное равенство-это ключ. Без него он говорит, что не может оценить, потому что ваше выражение не оценивает логическое значение.


вы должны быть в состоянии сделать эту работу. Вы используете имя экземпляра Exchange в условии? Условие должно быть что-то вроде myExchange.Name == "LKOH" не Exchange.Name == "LKOH".

кстати, используя оператор присваивания = вместо оператора равенства == будет работать, но он установит свойство и тратить 1/2 часа вашего времени, выясняя, что, черт возьми, происходит. Я совершил эту ошибку только вчера.


переменная, которую вы тестируете, должна быть в области действия в точке останова.

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

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

в моем случае я забыл, что отлаживаю приложение VB.

в VB равенство = не == как и многие другие языки, поэтому моя условная точка останова должна быть myString = "someValue" не myString == "someValue"