Добрый день Даниэль ЛеЧеманант имеет четкий ответ на что делает точка останова данных, поэтому я добавлю несколько анекдотов, которые выделяют полезные области использования:
Любой сценарий, в котором вы знаете , что изменится, но понятия не имеете , где код, который его меняет (поскольку в противном случае вы могли бы просто использовать условную точку останова). В частности,
«Невозможные» сценарии - программа аварийно завершает работу, потому что переменная X
равна NULL
, когда переменная X
никогда не должна быть NULL
, потому что ни один код никогда не устанавливает переменную X
в NULL
. Установите нормальную точку останова в коде, который инициализирует X
, и, когда он достигнут, установите точку останова данных, чтобы отслеживать изменение на NULL
. Несколько более распространенным является случай, когда память высвобождается слишком рано , и до сих пор существуют указатели на это: используйте точки останова для определения того, кто освобождает память.
Утомительные сценарии - сторонняя библиотека делает плохие, неприятные, ужасные вещи с вашими структурами данных. Вы знаете, что это происходит, потому что кто-то уничтожает ваши данные и, очевидно, ваш код совершенен. Но вы не знаете, где и когда. Конечно, вы можете пошагово пройти через мегабайт дизассемблированной DLL ... но зачем беспокоиться, если вы можете установить точку останова для ваших данных, бездельничать и ждать, пока она не будет уничтожена!
Heisenbugs - похоже на невозможный сценарий, но они уходят, когда вы смотрите слишком внимательно, так что нормальные точки останова - даже условные точки останова - бесполезны. Чувствительная логика времени и ввода данных пользователем особенно уязвима для такого рода вещей. Поскольку для точек останова данных не требуется, чтобы отладчик вообще прерывался, пока не настало время , при условии, что вы можете найти место в памяти, которое изменится только тогда, когда эта неуловимая ошибка действительно произойдет, вы можете использовать точки останова данных установить ловушку для Гейзенбаг и поймать ее в флагманском деле .
Сценарии спагетти - обычное явление в старых, прогнивших базах кодов, где к глобальным данным обращаются везде . Да, вы можете использовать обычные условные контрольные точки ... но вам понадобятся сотни из них. Точки останова данных облегчают процесс.