Могу ли я установить точку останова, когда переменная получает определенное значение в.NET?

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

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

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

8 ответов

Решение

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

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

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

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

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

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

а также

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

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

Изменена опция для условий точки останова

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

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

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

Введите описание здесь

Выбрать условие...

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

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

VSCode

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

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

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

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

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

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

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

  7. Задайте свое условие и нажмите . Например:
    myvar == 1234
    или
    'stophere' in myvar
    так далее

Ссылки:

https://code.visualstudio.com/docs/editor/debugging

Возможны условные точки останова, как уже указывалось в других ответах. Как объясняет JaredPar, вы можете установить точку останова, щелкнуть ее правой кнопкой мыши, выбрать «Условия» и ввести свои условия.

Начиная с Visual Studio 2019 Preview 2 доступны так называемые «точки останова по данным». Находясь в режиме отладки, вы можете выбрать переменную в окне «Авто» или «Локальные переменные» и щелкнув правой кнопкой мыши «Прервать изменение значений», вы можете архивировать только это.

Эта статья из Microsoft DevBlogs объясняет это довольно хорошо: Прерывание контрольные точки при изменении значения:данных для .NET Core в Visual Studio 2019

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

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