Условная точка останова в VS - значение изменено. Как пользоваться? - PullRequest
0 голосов
/ 24 декабря 2009

В Visual Studio (2005/2008) мы можем установить условную точку взлома, когда условие истинно. Теперь есть другой вариант - когда «Изменено».

Что это значит и как / когда я должен его использовать.

Я уже видел связанную страницу на MSDN , но это "изменилось", но мне все еще не ясно ...

Спасибо.

Ответы [ 4 ]

2 голосов
/ 24 декабря 2009

Лучше всего объяснить на примере:

  for (int ix = 0; ix < 10; ++ix) {
    Console.WriteLine(ix);  // Break here
  }

Введите выражение в диалоговом окне точки останова, которое оценивается как простое значение типа bool или целое значение. Например: «ix / 2». Когда вы его запустите, выполнение будет прервано при первом проходе цикла и только тогда, когда ix будет четным значением.

Между прочим, это не точка останова, упоминаемая в другом посте. Они не поддерживаются в управляемом коде. Отладчик фактически временно прерывает выполнение программы и каждый раз вычисляет выражение. Только для остановки выполнения, когда значение выражения изменилось. Это может побудить ваш код работать на лот медленнее в качестве побочного эффекта.

1 голос
/ 24 декабря 2009

Это означает, что каждый раз, когда значение выражения изменяется, активируется точка останова.

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

0 голосов
/ 24 декабря 2009

Эта «измененная» условная точка останова применяется только к нескольким байтам памяти (1, 2, 4 или 8), адрес и количество которых вы указываете в настройках точки останова. Когда во время выполнения программы что-то меняет эти байты, выполнение программы прерывается в точке, где было сделано изменение. Обычно он используется для отладки случаев непреднамеренного изменения памяти / переменных, когда вы не знаете, кто и как именно меняет ваши вещи.

0 голосов
/ 24 декабря 2009

Изменено не оценивается при первом запуске. Он прерывается при изменении оценки выражения для точки останова.

...