Как установить условные точки останова в Visual Studio?


133

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

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


11
Обратите внимание, что Express Edition не имеет этой функциональности.
Алексей Левенков

1
Я использую Express 2015, и у него есть возможность условных точек останова
mark.monteiro

Ответы:


174

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


1
В VS 2015 вам нужно
навести курсор на точку

Вы имеете в виду, щелкните правой кнопкой мыши, установите условие, получите сообщение об ошибке «Условие для точки останова не выполнено» .. не так ли?
Тоби Колк

1
Ответ также должен включать синтаксис условных операторов или информативную ссылку.
Андрей

50

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

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

Оператор if гарантирует, что в релизной сборке не будет присутствовать точка останова.


3
Это имеет большое преимущество в производительности и экономии времени. Я перебирал все потенциальные int 'id' в моей программе (всего около 3,5 миллионов), что занимает всего пару секунд. Я пытался использовать условную точку останова, но поскольку она не находилась в условной ветви, это замедляло скорость выполнения до такой степени, что через несколько минут я просто прекращал сеанс отладки. Использование скомпилированной точки останова сделало ее мгновенной.
Золотая рыбка сэндвич

35

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

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

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

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

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

16

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

if(yourCondition)
{
    System.Diagnostics.Debugger.Break();
}

9
  1. Установить точку останова на линии
  2. Правый клик на КРАСНОМ шаре
  3. Выбрал условную точку останова
  4. Состояние установки

8

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

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

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

  • У него есть IntelliSense .
  • Вы можете быть уверены, что переменные в выражении находятся в области видимости при вычислении выражения.
  • Вы можете быть уверены, что ваше выражение возвращает истину или ложь .

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

table.GetTableName().Contains("Setting")

5

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


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

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


4
  1. Установите точку останова как обычно.
  2. Щелкните правой кнопкой мыши маркер точки останова
  3. Нажмите «Условие ...»
  4. Напишите условие, вы можете использовать имена переменных
  5. Выберите «Верно» или «Изменилось»

4

На Visual Studio 6.0

Alt+ F9!!!


1
-1) Это не работает в VS 2012 2) На этот вопрос уже есть множество других (лучших) ответов и 3) кого на Земле волнует VS 6.0 (выпущенный в 1998 году)? 4) Даже если кому-то небезразлична VS 6, вопрос будет помечен .Net, который не имел поддержки до следующей версии VS (Visual Studio .Net)
Тим Медора

7
Ну, другие ответы не работают на VS 6.0. Поэтому я отправил решение.
Vorac

1

Установите breakpointкак обычно, щелкните правой кнопкой мыши точку останова, выберите condionопцию и задайте свое условие.


1

Создайте условную точку останова функции:

  1. В окне «Точки останова» нажмите «Создать», чтобы создать новую точку останова.

  2. На вкладке «Функция» введите «Реверс для функции». Введите 1 для строки, введите 1 для символа, а затем установите язык на Basic.

  3. Нажмите Условие и убедитесь, что флажок Условие установлен. Введите instr.length > 0Условие, убедитесь, что выбрана опция true, и нажмите кнопку ОК.

  4. В диалоговом окне «Новая точка останова» нажмите «ОК».

  5. В меню «Отладка» нажмите «Пуск».


0

Если вы пришли из Google, этот ответ может быть тем, что вы ищете.

  1. Нажмите Отладка> Новая точка останова> Точка останова функции введите описание изображения здесь

  2. там выбирают условную точку останова.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.