Compartilhar via


IDebugEngine2::CreatePendingBreakpoint

Cria um ponto de interrupção pendente no mecanismo de depuração (DE).

Sintaxe

int CreatePendingBreakpoint(
    IDebugBreakpointRequest2     pBPRequest,
    out IDebugPendingBreakpoint2 ppPendingBP
);

Parâmetros

pBPRequest
[em] Um objeto IDebugBreakpointRequest2 que descreve o ponto de interrupção pendente a ser criado.

ppPendingBP
[saiu] Retorna um objeto IDebugPendingBreakpoint2 que representa o ponto de interrupção pendente.

Valor de retorno

Se tiver êxito, retornará S_OK. Caso contrário, retornará um código de erro. Normalmente retorna E_FAIL se o parâmetro não corresponder a nenhum idioma suportado pelo DE de se o pBPRequestpBPRequest parâmetro for inválido ou incompleto.

Comentários

Um ponto de interrupção pendente é essencialmente uma coleção de todas as informações necessárias para vincular um ponto de interrupção ao código. O ponto de interrupção pendente retornado desse método não é vinculado ao código até que o método Bind seja chamado.

Para cada ponto de interrupção pendente definido pelo usuário, o gerenciador de depuração de sessão (SDM) chama esse método em cada DE anexado. Cabe ao DE verificar se o ponto de interrupção é válido para programas em execução nesse DE.

Quando o usuário define um ponto de interrupção em uma linha de código, o DE fica livre para vincular o ponto de interrupção à linha mais próxima no documento que corresponde a esse código. Isso possibilita que o usuário defina um ponto de interrupção na primeira linha de uma instrução de várias linhas, mas vincule-o na última linha (onde todo o código é atribuído nas informações de depuração).

Exemplo

O exemplo a seguir mostra como implementar esse método para um objeto simples CProgram . A implementação do DE poderia então encaminhar todas as chamadas para essa implementação do IDebugEngine2::CreatePendingBreakpoint método em 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);
}

Confira também