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 pBPRequest
pBPRequest
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);
}