Методы управления точками останова
Расположение точки останова можно указать по виртуальному адресу, смещению модуля и подпрограммы, а также по исходному файлу и номеру строки (в режиме исходного кода). Если установить точку останова в подпрограмме без смещения, точка останова активируется при вводе этой подпрограммы.
Существует несколько дополнительных типов точек останова:
Точка останова может быть связана с определенным потоком.
Точка останова может включать фиксированное количество проходов через адрес перед его активацией.
Точка останова может автоматически выдавать определенные команды при ее активации.
Точку останова можно задать для неисполняемой памяти и watch для этого расположения для чтения или записи.
При отладке нескольких процессов в пользовательском режиме коллекция точек останова зависит от текущего процесса. Чтобы просмотреть или изменить точки останова процесса, необходимо выбрать процесс в качестве текущего процесса. Дополнительные сведения о текущем процессе см. в разделе Управление процессами и потоками.
Команды отладчика для управления и отображения точек останова
Для управления точками останова или отображения их можно использовать следующие методы:
Используйте команду bl (список точек останова), чтобы получить список существующих точек останова и их текущего состояния.
Используйте команду .bpcmds (Отобразить команды точки останова), чтобы получить список всех точек останова вместе с командами, которые использовались для их создания.
Используйте команду bp (Задать точку останова), чтобы задать новую точку останова.
Используйте команду bu (Задать неразрешенную точку останова), чтобы задать новую точку останова. Точки останова, заданные с помощью bu , называются неразрешенными точками останова; Они имеют характеристики, отличные от точек останова, заданных с помощью bp. Подробные сведения см. в разделе Неразрешенные точки останова (bu Точки останова).
Используйте команду bm (Задать точку останова символа), чтобы задать новые точки останова для символов, соответствующих указанному шаблону. Точка останова, заданная с bm , будет связана с адресом (например, точкой останова bp ), если включен параметр /d ; Он будет неразрешен (например, точка останова bu ), если этот параметр не включен.
Используйте команду ba (Break on Access), чтобы задать точку останова процессора, также известную как точка останова данных. Эти точки останова могут запускаться при записи расположения в память, при считывается, выполняется в виде кода или при выполнении операций ввода-вывода ядра. Полные сведения см. в разделе Точки останова процессора (ba Точки останова).
Используйте команду bc (точка останова clear) для окончательного удаления одной или нескольких точек останова.
Используйте команду bd (отключить точку останова), чтобы временно отключить одну или несколько точек останова.
Используйте команду be (Включить точку останова), чтобы повторно включить одну или несколько отключенных точек останова.
Используйте команду br (изменение нумерации точки останова), чтобы изменить идентификатор существующей точки останова.
Используйте команду bs (Обновить команду точки останова), чтобы изменить команду, связанную с существующей точкой останова.
Используйте команду bsc (Обновить условную точку останова), чтобы изменить условие, при котором возникает существующая условная точка останова.
В WinDbg есть несколько элементов пользовательского интерфейса, которые упрощают управление точками останова и отображение их. См. раздел Настройка точек останова в WinDbg (классическая модель).
Каждая точка останова имеет десятичное число, которое называется идентификатором точки останова, связанным с ней. Это число определяет точку останова в различных командах.
Команды точки останова
Вы можете включить команду в точку останова, которая автоматически выполняется при достижении точки останова. Например, следующая команда прерывается в MyFunction+0x47, записывает файл дампа, а затем возобновляет выполнение.
0:000> bu MyFunction+0x47 ".dump c:\mydump.dmp; g"
Примечание Если вы управляете отладчиком пользовательского режима из отладчика ядра, не используйте g (Go) в командной строке точки останова. Последовательный интерфейс может не идти в ногу с этой командой, и вы не сможете вернуться в CDB. Дополнительные сведения об этой ситуации см. в разделе Управление отладчиком User-Mode из отладчика ядра.
Количество точек останова
В режиме ядра можно использовать не более 32 точек останова программного обеспечения. В пользовательском режиме можно использовать любое количество точек останова программного обеспечения.
Количество поддерживаемых точек останова процессора зависит от целевой архитектуры процессора.
Условные точки останова
Вы можете задать точку останова, которая активируется только при определенных условиях. Дополнительные сведения об этих типах точек останова см. в разделе Установка условной точки останова.
Неоднозначные точки останова
В отладчике версии 10.0.25310.1001 и более поздних версиях поддерживается неоднозначное разрешение точек останова. Неоднозначные точки останова позволяют отладчику задавать точки останова в определенных сценариях, где выражение точки останова разрешается в несколько расположений. Дополнительные сведения см. в разделе Неоднозначное разрешение точек останова.