Compartilhar via


Métodos relacionados ao ponto de interrupção

Um DE (mecanismo de depuração) deve dar suporte à configuração de pontos de interrupção. A depuração do Visual Studio dá suporte aos seguintes tipos de pontos de interrupção:

  • Limite

    Solicitado por meio da interface do usuário e associado com êxito a um local de código especificado

  • Pendente

    Solicitado por meio da interface do usuário, mas ainda não associado a instruções reais

Discussão

Por exemplo, um ponto de interrupção pendente ocorre quando as instruções ainda não são carregadas. Quando o código é carregado, os pontos de interrupção pendentes tentam associar-se ao código no local prescrito, com o objetivo de inserir instruções de quebra no código. Os eventos são enviados para o SDM (gerenciador de depuração de sessão) para indicar uma associação bem-sucedida ou para notificar que houve erros de associação.

Um ponto de interrupção pendente também gerencia sua própria lista interna de pontos de interrupção associados correspondentes. Um ponto de interrupção pendente pode causar a inserção de muitos pontos de interrupção no código. A interface do usuário de depuração do Visual Studio mostra uma exibição de árvore de pontos de interrupção pendentes e seus pontos de interrupção associados correspondentes.

A criação e o uso de pontos de interrupção pendentes exigem a implementação do método IDebugEngine2::CreatePendingBreakpoint , bem como os seguintes métodos de interfaces IDebugPendingBreakpoint2 .

Método Description
CanBind Determina se um ponto de interrupção pendente especificado pode ser associado a uma localização do código.
Ligar Associa um ponto de interrupção pendente especificado a um ou mais locais específicos de código.
GetState Obtém o estado de um ponto de interrupção pendente.
GetBreakpointRequest Obtém a solicitação de ponto de interrupção usada para criar um ponto de interrupção pendente.
Habilitar Alterna o estado habilitado de um ponto de interrupção pendente.
EnumBoundBreakpoints Enumera todos os pontos de interrupção associados a partir de um ponto de interrupção pendente.
EnumErrorBreakpoints Enumera todos os pontos de interrupção de erro resultantes de um ponto de interrupção pendente.
excluir Exclui um ponto de interrupção pendente e todos os pontos de interrupção associados a ele.

Para enumerar os pontos de interrupção associados e os pontos de interrupção de erro, você deve implementar todos os métodos de IEnumDebugBoundBreakpoints2 e IEnumDebugErrorBreakpoints2.

Pontos de interrupção pendentes que se vinculam a um local de código exigem a implementação dos seguintes métodos IDebugBoundBreakpoint2.

Método Description
GetPendingBreakpoint Obtém o ponto de interrupção pendente que contém um ponto de interrupção.
GetState Obtém o estado de um ponto de interrupção associado.
GetBreakpointResolution Obtém a resolução do ponto de interrupção que descreve um ponto de interrupção.
Habilitar Habilita ou desabilita um ponto de interrupção.
excluir Exclui um ponto de interrupção associado.

As informações de solicitação e resolução exigem a implementação dos seguintes métodos IDebugBreakpointResolution2.

Método Description
GetBreakpointType Obtém o tipo do ponto de interrupção representado por uma resolução.
GetResolutionInfo Obtém as informações de resolução de ponto de interrupção que descrevem um ponto de interrupção.

A resolução de erros que podem ocorrer durante a associação requer a implementação dos seguintes métodos IDebugErrorBreakpoint2 .

Método Description
GetPendingBreakpoint Obtém o ponto de interrupção pendente que contém um ponto de interrupção com erro.
GetBreakpointResolution Obtém a resolução de erros do ponto de interrupção que descreve um ponto de interrupção de erro.

A resolução de erros que podem ocorrer durante a associação também requer os seguintes métodos de IDebugErrorBreakpointResolution2.

Método Description
GetBreakpointType Obtém o tipo de ponto de interrupção.
GetResolutionInfo Obtém as informações de resolução de um ponto de interrupção.

Exibir o código-fonte em um ponto de interrupção exige que você implemente os métodos de IDebugStackFrame2::GetDocumentContext e/ou os métodos de IDebugStackFrame2::GetCodeContext.

Consulte também