Задание точек останова
Точки останова создаются с помощью метода AddBreakpoint . Этот метод создает объект IDebugBreakpoint , представляющий точку останова. Он также задает тип точки останова (программная точка останова или точка останова процессора). После создания точки останова ее тип нельзя изменить.
Точки останова удаляются с помощью метода RemoveBreakpoint . При этом также удаляется объект IDebugBreakpoint ; этот объект не может использоваться повторно.
Примечание Хотя IDebugBreakpoint реализует интерфейс IUnknown , методы IUnknown::AddRef и IUnknown::Release не используются для управления временем существования точки останова. Эти методы не влияют на время существования точки останова. Вместо этого объект IDebugBreakpoint удаляется после вызова метода RemoveBreakpoint .
При создании точки останова ей присваивается уникальный идентификатор точки останова. Этот идентификатор не изменится. Однако после удаления точки останова ее идентификатор можно использовать для другой точки останова. Дополнительные сведения о том, как получать уведомления об удалении точки останова, см. в разделе Мониторинг событий.
При создании точки останова она изначально отключается; это означает, что это не приведет к остановке выполнения целевого объекта. Эту точку останова можно включить с помощью метода AddFlags для добавления флага DEBUG_BREAKPOINT_ENABLED.
При первом создании точки останова с ней связано расположение памяти 0x00000000. Расположение можно изменить с помощью setOffset с адресом или setOffsetExpression с символьным выражением. Расположение точки останова должно быть изменено по сравнению с ее начальным значением перед использованием.