IDebugEngine2::CreatePendingBreakpoint
Создает ожидающая точка останова в подсистеме отладки (DE).
Синтаксис
int CreatePendingBreakpoint(
IDebugBreakpointRequest2 pBPRequest,
out IDebugPendingBreakpoint2 ppPendingBP
);
Параметры
pBPRequest
[in] Объект IDebugBreakpointRequest2 , описывающий ожидающую точку останова для создания.
ppPendingBP
[out] Возвращает объект IDebugPendingBreakpoint2 , представляющий ожидающую точку останова.
Возвращаемое значение
В случае успешного выполнения возвращается S_OK
; в противном случае возвращается код ошибки. Обычно возвращается E_FAIL
, если pBPRequest
параметр не соответствует языку, поддерживаемому DE, если pBPRequest
параметр недопустим или неполным.
Замечания
Ожидающая точка останова по сути представляет собой коллекцию всех сведений, необходимых для привязки точки останова к коду. Ожидающая точка останова, возвращаемая этим методом, не привязана к коду до вызова метода Bind .
Для каждой ожидающей точки останова, определяемой пользователем, диспетчер отладки сеансов вызывает этот метод в каждом присоединенном DE. Чтобы убедиться, что точка останова действительна для программ, работающих в этом DE.
Когда пользователь задает точку останова в строке кода, DE может привязать точку останова к ближайшей строке документа, соответствующей этому коду. Это позволяет пользователю задать точку останова в первой строке многострочный оператор, но привязать ее к последней строке (где весь код атрибутируется в сведениях отладки).
Пример
В следующем примере показано, как реализовать этот метод для простого CProgram
объекта. Затем реализация DE IDebugEngine2::CreatePendingBreakpoint
может перенаправить все вызовы этой реализации метода в каждой программе.
HRESULT CProgram::CreatePendingBreakpoint(IDebugBreakpointRequest2* pBPRequest, IDebugPendingBreakpoint2** ppPendingBP)
{
// Create and initialize the CPendingBreakpoint object.
CComObject<CPendingBreakpoint> *pPending;
CComObject<CPendingBreakpoint>::CreateInstance(&pPending);
pPending->Initialize(pBPRequest, m_pInterp, m_pCallback, m_pEngine);
return pPending->QueryInterface(ppPendingBP);
}