IDebugEngine2::CreatePendingBreakpoint
Cria um ponto de interrupção pendente no mecanismo de depuração (DE).
HRESULT CreatePendingBreakpoint(
IDebugBreakpointRequest2* pBPRequest,
IDebugPendingBreakpoint2** ppPendingBP
);
int CreatePendingBreakpoint(
IDebugBreakpointRequest2 pBPRequest,
out IDebugPendingBreakpoint2 ppPendingBP
);
Parâmetros
pBPRequest
[in] Um IDebugBreakpointRequest2 objeto que descreve o ponto de interrupção pendente para criar.ppPendingBP
[out] Retorna um IDebugPendingBreakpoint2 o objeto que representa o ponto de interrupção pendente.
Valor de retorno
Se bem-sucedida, retorna S_OK; Caso contrário, retorna um código de erro. Normalmente retorna E_FAIL se a pBPRequest parâmetro não corresponde a qualquer idioma suportado pelo DE que o pBPRequest parâmetro é 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 a um ponto de interrupção ao código. O ponto de interrupção pendente retornado deste método não está vinculado ao código até o IDebugPendingBreakpoint2::Bind método é chamado.
Para cada pendentes do ponto de interrupção conjuntos do usuário, o Gerenciador de sessão de depuração (SDM) chama esse método em cada DE anexado. Ele é o DE verificar se o ponto de interrupção é válido para os programas em execução em que DE.
Quando o usuário define um ponto de interrupção em uma linha de código, o DE é livre para vincular o ponto de interrupção para a linha mais próxima do documento que corresponde a este código. Isso possibilita ao usuário definir um ponto de interrupção na primeira linha de uma instrução de várias linhas, mas acoplá-lo na última linha (onde todo o código é atribuído nas informações de depuração).
Exemplo
O exemplo a seguir mostra como implementar este método para um simples CProgram objeto. Implementação da IDebugEngine2::CreatePendingBreakpoint , em seguida, poderia encaminhar todas as chamadas para esta implementação do 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);
}