IDebugEngine2::CreatePendingBreakpoint
Crea un punto de interrupción pendiente en el motor de depuración (DE).
Sintaxis
int CreatePendingBreakpoint(
IDebugBreakpointRequest2 pBPRequest,
out IDebugPendingBreakpoint2 ppPendingBP
);
Parámetros
pBPRequest
[in] Objeto IDebugBreakpointRequest2 que describe el punto de interrupción pendiente que se va a crear.
ppPendingBP
[out] Devuelve un objeto IDebugPendingBreakpoint2 que representa el punto de interrupción pendiente.
Valor devuelto
Si la operación se realiza correctamente, devuelve S_OK
; de lo contrario, devuelve un código de error. Normalmente, devuelve E_FAIL
si el pBPRequest
parámetro no coincide con ningún idioma admitido por el de si el pBPRequest
parámetro no es válido o está incompleto.
Comentarios
Un punto de interrupción pendiente es esencialmente una colección de toda la información necesaria para enlazar un punto de interrupción al código. El punto de interrupción pendiente devuelto desde este método no está enlazado al código hasta que se llama al método Bind .
Para cada punto de interrupción pendiente, el administrador de depuración de sesión (SDM) llama a este método en cada DE asociado. Es hasta el DE para comprobar que el punto de interrupción es válido para los programas que se ejecutan en ese DE.
Cuando el usuario establece un punto de interrupción en una línea de código, el DE es libre de enlazar el punto de interrupción a la línea más cercana del documento que corresponde a este código. Esto permite al usuario establecer un punto de interrupción en la primera línea de una instrucción de varias líneas, pero enlazarlo en la última línea (donde se atribuye todo el código en la información de depuración).
Ejemplo
En el ejemplo siguiente se muestra cómo implementar este método para un objeto simple CProgram
. La implementación del DE IDebugEngine2::CreatePendingBreakpoint
podría reenviar todas las llamadas a esta implementación del método en cada programa.
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);
}