Partilhar via


Métodos relacionados com o ponto de interrupção

Um mecanismo de depuração (DE) deve suportar a configuração de pontos de interrupção. A depuração do Visual Studio oferece suporte aos seguintes tipos de pontos de interrupção:

  • Encadernado

    Solicitado através da interface do usuário e vinculado com êxito a um local de código especificado

  • Pendente

    Solicitado através da interface do usuário, mas ainda não vinculado às instruções reais

Debate

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

Um ponto de interrupção pendente também gerencia sua própria lista interna de pontos de interrupção vinculados correspondentes. Um ponto de interrupção pendente pode provocar a inserção de múltiplos pontos de interrupção no código. A interface do usuário de depuração do Visual Studio mostra uma exibição em árvore de pontos de interrupção pendentes e seus pontos de interrupção vinculados 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 de código.
Vincular Liga um ponto de interrupção pendente especificado a uma ou mais localizações 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.
Enable Alterna o estado ativado de um ponto de interrupção pendente.
EnumBoundBreakpoints Enumera todos os pontos de interrupção associados a um ponto de interrupção pendente.
EnumErrorBreakpoints Enumera todos os pontos de interrupção de erro resultantes de um ponto de interrupção pendente.
Eliminar Exclui um ponto de interrupção pendente e todos os pontos de interrupção vinculados a ele.

Para enumerar os pontos de interrupção vinculados e os pontos de interrupção de erro, é necessário implementar todos os métodos de IEnumDebugBoundBreakpoints2 e de IEnumDebugErrorBreakpoints2.

Pontos de interrupção pendentes que se vinculam a uma localização do 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 vinculado.
GetBreakpointResolution Obtém a resolução do ponto de interrupção que descreve um ponto de interrupção.
Enable Habilita ou desabilita um ponto de interrupção.
Eliminar Exclui um ponto de interrupção vinculado.

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

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

A resolução de erros que podem ocorrer durante a vinculaçã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 de erro.
GetBreakpointResolution Obtém a resolução de erro do ponto de interrupção que descreve um ponto de interrupção de erro.

A resolução de erros que podem ocorrer durante a vinculaçã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.

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

Consulte também