Поделиться через


Методы управления точками останова

Точка останова — это расположение в исполняемом коде, в котором операционная система останавливает выполнение и прерывается в отладчик. Это позволяет анализировать целевые и проблемные команды отладчика.

Можно указать расположение точки останова по виртуальному адресу, модулям и стандартным смещениям, или исходному файлу и номеру строки (при использовании исходного режима). Если точка останова помещается на рутину без указания смещения, точка останова активируется при входе в нее.

Существует несколько дополнительных типов точек останова:

  • Точка останова может быть связана с определенным потоком.

  • Точка останова может включить фиксированное число проходов через адрес перед его активацией.

  • Точка останова может автоматически выдавать определенные команды при срабатывании.

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

При отладке нескольких процессов в пользовательском режиме коллекция точек останова зависит от текущего процесса. Чтобы просмотреть или изменить точки останова процесса, необходимо выбрать процесс в качестве текущего процесса. Дополнительные сведения о текущем процессе см. в разделе "Управление процессами и потоками".

Команды отладчика для управления и отображения точек останова

Для управления точками останова или отображения точек останова можно использовать следующие методы:

  • Используйте команду BL (список точек останова) для перечисления существующих точек останова и их текущего состояния.

  • Используйте команду BPCMDS (Отображение команд точки останова) для перечисления всех точек останова вместе с командами, которые использовались для их создания.

  • Используйте команду bp (Задать точку останова), чтобы задать новую точку останова.

  • Используйте команду bu (Задать неразрешенную точку останова), чтобы задать новую точку останова. Точки останова, заданные с помощью bu , называются неразрешенными точками останова; Они имеют разные характеристики, отличные от точек останова, заданных с помощью bp. Полные сведения см. в разделе «Неразрешенные точки останова (bu Breakpoints)».

  • Используйте команду bm (Set Symbol Breakpoint), чтобы задать новые точки останова для символов, которые соответствуют указанному шаблону. Точка останова с bm будет связана с адресом (например, точкой останова bp), если включен параметр /d; она будет неразрешена (например, точка останова bu), если этот параметр не включен.

  • Используйте команду ba (Break on Access), чтобы задать точку останова процессора, также называемую точкой останова данных. Эти точки останова можно активировать при записи расположения памяти, когда оно считывается, когда оно выполняется в виде кода или при возникновении операций ввода-вывода ядра. Полные сведения см. в разделе "Точки останова процессора" (точки останова ba).

  • Используйте команду bc (Breakpoint 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 и более поздних версиях движка отладчика теперь поддерживается разрешение неоднозначных точек останова. Неоднозначные точки останова позволяют отладчику задавать точки останова в определенных сценариях, когда выражение точки останова разрешается в несколько расположений. Дополнительные сведения см. в разделе "Неоднозначное разрешение точек останова".

См. также

использование точек останова

Синтаксис точки останова

bp, bu, bm (Установка точки останова)

Неразрешенные точки останова (бу точки останова)