Partilhar via


Métodos de controle de pontos de interrupção

Um ponto de interrupção é um local no código executável no qual o sistema operacional interrompe a execução e invade o depurador. Isso permite que você analise o alvo e emita comandos do depurador.

Você pode especificar o local de um ponto de interrupção por endereço virtual, módulo e deslocamentos de rotina, ou arquivo de origem e número de linha (quando no modo de origem). Se você colocar um ponto de interrupção em uma rotina sem um deslocamento, o ponto de interrupção será ativado quando essa rotina for inserida.

Existem vários tipos adicionais de pontos de interrupção:

  • Um ponto de interrupção pode ser associado a um determinado thread.

  • Um ponto de interrupção pode habilitar um número fixo de passagens por um endereço antes que ele seja acionado.

  • Um ponto de interrupção pode emitir automaticamente determinados comandos quando é acionado.

  • Um ponto de interrupção pode ser definido em memória não executável para acompanhar quando esse local é lido ou escrito.

Se você estiver depurando mais de um processo no modo de usuário, a coleta de pontos de interrupção dependerá do processo atual. Para exibir ou alterar os pontos de interrupção de um processo, você deve selecionar o processo como o processo atual. Para obter mais informações sobre o processo atual, consulte Controlando processos e threads.

Comandos do depurador para controlar e mostrar pontos de interrupção

Para controlar ou exibir pontos de interrupção, você pode usar os seguintes métodos:

No WinDbg, há vários elementos da interface do usuário que facilitam o controle e a exibição de pontos de interrupção. Consulte Definindo pontos de interrupção no WinDbg (clássico).

Cada ponto de interrupção tem um número decimal chamado ID do ponto de interrupção associado a ele. Este número identifica o ponto de interrupção em vários comandos.

Comandos de ponto de interrupção

Você pode incluir um comando em um ponto de interrupção que é executado automaticamente quando o ponto de interrupção é atingido. Por exemplo, o comando seguinte interrompe em MyFunction+0x47, grava um ficheiro de despejo e depois retoma a execução.

0:000> bu MyFunction+0x47 ".dump c:\mydump.dmp; g" 

Nota Se estiveres a controlar o depurador de modo de utilizador a partir do depurador do kernel, não uses g (Go) na sequência de comandos do ponto de interrupção. A interface serial pode não conseguir acompanhar esse comando e você não poderá voltar para CDB. Para obter mais informações sobre essa situação, consulte Controlo do Depurador User-Mode a partir do Depurador do Kernel.

Número de pontos de interrupção

No modo kernel, você pode usar um máximo de 32 pontos de interrupção de software. No modo de usuário, você pode usar qualquer número de pontos de interrupção de software.

O número de pontos de interrupção do processador suportados depende da arquitetura do processador de destino.

Pontos de interrupção condicionais

Você pode definir um ponto de interrupção que é acionado somente sob determinadas condições. Para obter mais informações sobre esses tipos de pontos de interrupção, consulte Definindo um ponto de interrupção condicional.

Pontos de interrupção ambíguos

Na versão 10.0.25310.1001 e posterior do mecanismo do depurador, a resolução de ponto de interrupção ambígua agora é suportada. Pontos de interrupção ambíguos permitem que o depurador defina pontos de interrupção em determinados cenários em que uma expressão de ponto de interrupção é resolvida em vários locais. Para obter mais informações, consulte Resolução de ponto de interrupção ambíguo.

Ver também

Usando pontos de interrupção

Sintaxe do ponto de interrupção

bp, bu, bm (Definir ponto de interrupção)

Pontos de interrupção não resolvidos (bu Breakpoints)