Могу ли я установить точку останова, когда переменная получает определенное значение в .NET? - PullRequest
41 голосов
/ 20 сентября 2011

Я использую Visual Studio 2010 и знаю, что эта функция доступна на C ++.

Мне нужно отладить некоторый код, который изменяет переменную на несколько значений.Я хочу отлаживать код в конкретном случае, когда переменная получает определенное значение.Я знаю, что могу добавить if(var == value), но есть ли какой-нибудь элегантный способ сделать это?

Другой вопрос, могу ли я установить точку останова, когда переменная вообще изменяется?

Ответы [ 7 ]

84 голосов
/ 20 сентября 2011

Конечно, можно задать условие, например, переменную, получающую определенное значение. Это известно как условие точки останова. Чтобы создать его, сделайте следующее.

  • Установить точку останова в точке изменения переменной
  • Щелкните правой кнопкой мыши точку останова и выберите «Условие»
  • Введите условное выражение, например "theNewValue == 42"

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

Второй элемент, который вы запрашивали, разрыв, когда значение переменной изменяется по любой причине, называется точкой останова данных. Они доступны только для кода C ++. Это не вариант в C #, VB.NET или любом другом управляемом языке.

4 голосов
/ 20 сентября 2011

Пока вы используете редакцию Visual Studio, отличную от Express, вы можете добиться этого в C #, используя условие точки останова .

В диалоговом окне Условие точки останова введите действительное выражение в поле Условие, например myLocalVariable> 1

и

... выберите Изменилось , если вы хотите разбить при изменении значения выражения.

Чтобы перейти к опции Изменено , щелкните правой кнопкой мыши точку останова в окне Точки останова и выберите Условие ... , а затем проверьте скриншот ниже .

Has Changed option for breakpoint conditions

3 голосов
/ 20 сентября 2011

Это зависит от объема вашей точки останова.Если переменная не является локальной или нестатической, вы не сможете.

Чтобы установить условие точки останова, щелкните ее правой кнопкой мыши, и вы должны получить этот экран:

Enter image description here

Pick Состояние ...

3 голосов
/ 20 сентября 2011

Добавьте точку останова с помощью F9 - щелкните ее правой кнопкой мыши и выберите "Condition..." - теперь вы можете добавить логическое условие, и точка останова будет срабатывать, только если это условие имеет значение true.

2 голосов
/ 28 мая 2015

Вы можете использовать условные контрольные точки. Я знаю, что ваш вопрос относится к VS2010, но помните, что начиная с VS2012, вы должны переключиться в режим управляемой совместимости, чтобы использовать условные точки останова в Visual Basic. Почему и как описано здесь:

переключение к управляемой совместимости режима-в-визуальной студии-2013

0 голосов
/ 10 апреля 2019

VSCode

В VisualStudio Code вы можете установить условные контрольные точки следующим образом:

  1. Щелкните по желобу, чтобы создать точку останова с красной точкой

  2. Выберите «Отладка» на левой панели инструментов (значок: ошибка с косой чертой)

  3. Есть четыре раздела: переменные, наблюдение, стек вызовов и точки останова

  4. Разверните раздел «Точки останова», чтобы вы могли увидеть точки останова

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

  6. Выберите Edit Breakpoint...

  7. Установите свое состояние и нажмите . Например:
    myvar == 1234
    или
    'stophere' in myvar
    и т. Д.

Ссылки:

https://code.visualstudio.com/docs/editor/debugging#_conditional-breakpoints

0 голосов
/ 20 сентября 2011

Вы можете сделать обе эти вещи.

  1. Установить точку останова в VS. Щелкните правой кнопкой мыши на красной точке на полях и выберите Добавить условие. Там вы можете сказать var==value и выбрать «Верно».
  2. Скорее всего, этого можно достичь с помощью параметра «Изменился» в диалоговом окне выше.
...