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


Задание точек останова

Точки останова создаются с помощью метода AddBreakpoint . Этот метод создает объект IDebugBreakpoint , представляющий точку останова. Он также задает тип точки останова (программная точка останова или точка останова процессора). После создания точки останова ее тип нельзя изменить.

Точки останова удаляются с помощью метода RemoveBreakpoint . При этом также удаляется объект IDebugBreakpoint ; этот объект не может использоваться повторно.

Примечание Хотя IDebugBreakpoint реализует интерфейс IUnknown , методы IUnknown::AddRef и IUnknown::Release не используются для управления временем существования точки останова. Эти методы не влияют на время существования точки останова. Вместо этого объект IDebugBreakpoint удаляется после вызова метода RemoveBreakpoint .

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

При создании точки останова она изначально отключается; это означает, что это не приведет к остановке выполнения целевого объекта. Эту точку останова можно включить с помощью метода AddFlags для добавления флага DEBUG_BREAKPOINT_ENABLED.

При первом создании точки останова с ней связано расположение памяти 0x00000000. Расположение можно изменить с помощью setOffset с адресом или setOffsetExpression с символьным выражением. Расположение точки останова должно быть изменено по сравнению с ее начальным значением перед использованием.