Métodos de controle de pontos de interrupção
Você pode especificar o local de um ponto de interrupção por endereço virtual, deslocamentos de módulo e rotina ou arquivo de origem e número de linha (quando estiver 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.
Há 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 de ser disparado.
Um ponto de interrupção pode emitir automaticamente determinados comandos quando é disparado.
Um ponto de interrupção pode ser definido em memória não executável e watch para que esse local seja lido ou gravado.
Se você estiver depurando mais de um processo no modo de usuário, a coleção 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 exibir pontos de interrupção
Para controlar ou exibir pontos de interrupção, você pode usar os seguintes métodos:
Use o comando bl (Lista de Pontos de Interrupção) para listar os pontos de interrupção existentes e seus status atuais.
Use o comando .bpcmds (Exibir Comandos de Ponto de Interrupção) para listar todos os pontos de interrupção junto com os comandos que foram usados para criá-los.
Use o comando bp (Definir Ponto de Interrupção) para definir um novo ponto de interrupção.
Use o comando bu (Definir ponto de interrupção não resolvido) para definir um novo ponto de interrupção. Os pontos de interrupção definidos com bu são chamados de pontos de interrupção não resolvidos; eles têm características diferentes dos pontos de interrupção definidos com bp. Para obter detalhes completos, consulte Pontos de interrupção não resolvidos (bu Breakpoints).
Use o comando bm (Definir ponto de interrupção de símbolo) para definir novos pontos de interrupção em símbolos que correspondam a um padrão especificado. Um ponto de interrupção definido com bm será associado a um endereço (como um ponto de interrupção bp ) se a opção /d estiver incluída; ele não será resolvido (como um ponto de interrupção bu ) se essa opção não estiver incluída.
Use o comando ba (Break on Access) para definir um ponto de interrupção do processador, também conhecido como ponto de interrupção de dados. Esses pontos de interrupção podem ser disparados quando o local da memória é gravado, quando é lido, quando é executado como código ou quando ocorre e/S do kernel. Para obter detalhes completos, consulte Pontos de interrupção do processador (ba Pontos de interrupção).
Use o comando bc (Breakpoint Clear) para remover permanentemente um ou mais pontos de interrupção.
Use o comando bd (Desabilitar Ponto de Interrupção) para desabilitar temporariamente um ou mais pontos de interrupção.
Use o comando be (Breakpoint Enable) para reabilitar um ou mais pontos de interrupção desabilitados.
Use o comando br (Renumeração de Ponto de Interrupção) para alterar a ID de um ponto de interrupção existente.
Use o comando bs (Update Breakpoint Command) para alterar o comando associado a um ponto de interrupção existente.
Use o comando bsc (Atualizar Ponto de Interrupção Condicional) para alterar a condição sob a qual ocorre um ponto de interrupção condicional existente.
No WinDbg, há vários elementos de interface do usuário que facilitam o controle e a exibição de pontos de interrupção. Consulte Configurando 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. Esse 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 a seguir quebra em MyFunction+0x47, grava um arquivo de despejo e, em seguida, retoma a execução.
0:000> bu MyFunction+0x47 ".dump c:\mydump.dmp; g"
Nota Se você estiver controlando o depurador do modo de usuário do depurador de kernel, não use g (Go) na cadeia de caracteres de comando do ponto de interrupção. A interface serial pode não conseguir acompanhar esse comando e você não poderá voltar ao CDB. Para obter mais informações sobre essa situação, consulte Controlando o User-Mode Depurador do Depurador do Kernel.
Número de pontos de interrupção
No modo kernel, você pode usar no máximo 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 com suporte depende da arquitetura do processador de destino.
Pontos de interrupção condicionais
Você pode definir um ponto de interrupção que é disparado somente em determinadas condições. Para obter mais informações sobre esses tipos de pontos de interrupção, consulte Configurando um ponto de interrupção condicional.
Pontos de interrupção ambíguos
Na versão 10.0.25310.1001 e posterior do mecanismo de depurador, agora há suporte para a resolução ambígua do ponto de interrupção. 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 para vários locais. Para obter mais informações, consulte Resolução de ponto de interrupção ambíguo.
Confira também
Sintaxe de ponto de interrupção