Как мне «запустить, пока эта переменная не изменится» при отладке? - PullRequest
21 голосов
/ 13 июня 2011

При отладке моего C # я часто хочу знать , когда значение переменной изменяется , а затем исследовать состояние программы.

В настоящее время я делаю это так:

  1. Список наблюдения переменная-нарушитель.
  2. Физический спам F10 (ярлык для Step Over), пока я не увижу изменение значения.

Однако количество требуемых F10 раздражает.

Конечно, это было автоматизировано, подумал я. Но я не могу найти эту функцию в моем Microsoft Visual C # Express , что меня удивляет. В конце концов, Watch-list автоматически автоматически выделяет измененные значения ярко-красным цветом.

Я что-то упустил?

Ответы [ 8 ]

21 голосов
/ 13 июня 2011

Простой трюк для экспресс-издания:

private string myValue;
public string MyValue
{
  set
  {
    if (this.myValue != value) Debugger.Break();
    this.myValue = value;
  }
}
6 голосов
/ 13 июня 2011

Условные точки останова - это то, что вам нужно, но, похоже, они недоступны в Visual Studio Express.

В Visual Studio (не-Express) способ работычто вы создаете условную точку останова с выражением, равным вашему значению наблюдения, и «изменилось» как условие точки останова.

0 голосов
/ 13 июня 2011

Если вы хотите отследить изменение переменной в некоторой точке останова, а не отловить точно, где она была изменена, то установите точку останова, щелкните ее правой кнопкой мыши и выберите «Условие». Допустим, ваша переменная называется X, а текущее значение равно A. Введите «X! = A» в поле условия.

Теперь точка останова будет достигнута только после того, как X изменит какое-либо значение, отличное от A.

0 голосов
/ 13 июня 2011
  1. Установите точку останова, где вы хотите, чтобы код сделал паузу
  2. Открыть окно точек останова (Отладка -> Windows -> Точки останова)
  3. Щелкните правой кнопкой мыши на точке останова и выберите Условие ...
  4. Установите условие в качестве имени переменной и установите переключатель «Изменено».
  5. Нажмите OK, а затем выполните отладку в обычном режиме:)
0 голосов
/ 13 июня 2011

Используйте Debugger.Break в зависимости от условий выполнения или щелкните правой кнопкой мыши на некоторой точке останова и выберите условный разрыв -> изменился

Редактировать: не знаю об этом в Экспресс

0 голосов
/ 13 июня 2011

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

0 голосов
/ 13 июня 2011

вы можете использовать условные контрольные точки

см. это

0 голосов
/ 13 июня 2011

Вот как я это делаю в Visual Studio. Установите точку останова, нажав F9 или щелкнув в самом левом поле. Затем щелкните правой кнопкой мыши на появившейся красной точке и выберите команду «Условие». Там есть и другие варианты.

Однако это может не поддерживаться в Visual Studio Express.

...