Как установить условные точки останова в Visual Studio? - PullRequest
119 голосов
/ 13 июля 2011

Есть ли простой способ установить условные точки останова в Visual Studio?

Если я хочу достичь точки останова только тогда, когда значение переменной становится чем-то, как я могу это сделать?

Ответы [ 12 ]

155 голосов
/ 13 июля 2011

Установите точку останова как обычно.Щелкните правой кнопкой мыши.Нажмите Условие.

45 голосов
/ 18 ноября 2013

Когда вы используете Express Edition, вы можете попробовать это:

#if DEBUG
    if( fooVariable == true )
        System.Diagnostics.Debugger.Break();
#endif

, если инструкция гарантирует, что в версии сборки точка входа не будет присутствовать.

33 голосов
/ 13 июля 2011

Visual Studio предоставляет множество параметров для условных точек останова:

Чтобы установить любой из них, вы

  1. Установите точку останова
  2. Щелкните правой кнопкой мыши точку остановаи во всплывающем меню вы выбираете вариант, который подходит вам.

Эти параметры следующие:

  • Вы можете установить условие на основе введенного вами выражения кода (выберите Условие извсплывающее меню).Например, вы можете указать это foo == 8 или другое выражение.
  • Вы можете запускать точки останова после того, как они были достигнуты определенное количество раз.(выберите Hit Count во всплывающем меню).Это забавный вариант для игры, поскольку вы не ограничены определенным количеством попаданий, но у вас есть варианты и для нескольких других сценариев.Я оставлю это вам для изучения возможностей.
  • Вы можете установить фильтры по идентификатору процесса, идентификатору потока и имени машины (выберите Фильтр во всплывающем меню)
16 голосов
/ 28 мая 2014

Просто еще один способ сделать это (или, если вы используете экспресс) добавить условие в коде:

if(yourCondition)
{
    System.Diagnostics.Debugger.Break();
}
9 голосов
/ 13 июля 2011
  1. Установка точки останова на линии
  2. Правое нажатие на КРАСНОМ шаре
  3. Выбор условной точки останова
  4. Условия настройки
7 голосов
/ 13 мая 2015

Написание фактического условия может быть сложной частью, поэтому я склонен к

  1. Установить обычную точку останова
  2. Запускать код до тех пор, пока точка останова не будет достигнута впервые
  3. Используйте Немедленное окно (Отладка> Windows> Немедленное), чтобы проверить свое выражение .
  4. Щелкните правой кнопкой мыши точку останова, выберите Условие и вставьте в выражение .

Преимущества использования окна Immediate

  • Имеет intellisense
  • Вы можете быть уверены, что переменные в выражении имеют в области действия , когда выражение оценивается
  • Вы можете быть уверены, что ваше выражение возвращает истину или ложь

Этот пример прерывается, когда код ссылается на таблицу с именем «Setting»

table.GetTableName().Contains("Setting")
5 голосов
/ 13 июля 2011
  1. Установите точку останова как обычно.
  2. Щелкните правой кнопкой мыши маркер точки останова
  3. Нажмите «Условие ...»
  4. Напишите условие, вы можетеиспользовать имена переменных
  5. Выберите «Верно» или «Изменилось»
5 голосов
/ 13 июля 2011

Создайте точку останова, как обычно, щелкните правой кнопкой мыши красную точку и выберите «условие».

4 голосов
/ 08 апреля 2013

В Visual Studio 6.0

Alt + F9 !!!

4 голосов
/ 13 июля 2011
  1. Установить точку останова как обычно
  2. Щелкните правой кнопкой мыши точку останова и выберите Условие
  3. Вы увидите диалоговое окно с надписью «Условие точки останова»
  4. Поместите условие в поле, например. "я == 5"

Точка останова будет достигнута только тогда, когда мне будет 5.

...