Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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:
Use o comando bl (Lista de pontos de interrupção) para listar os pontos de interrupção existentes e seu status atual.
Use o comando .bpcmds (Exibir comandos de ponto de interrupção) para listar todos os pontos de interrupção, juntamente com os comandos que foram usados para criá-los.
Use o comando bp (set Breakpoint) para definir um novo ponto de interrupção.
Use o comando bu (set Unresolved Breakpoint) 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 que são definidos com BP. Para obter detalhes completos, consulte Pontos de interrupção não resolvidos (bu Breakpoints).
Use o comando bm (set Symbol Breakpoint) 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 acionados 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 Breakpoints).
Use o comando bc (Breakpoint Clear) para remover permanentemente um ou mais pontos de interrupção.
Use o comando bd (Breakpoint Disable) para desativar temporariamente um ou mais pontos de interrupção.
Use o comando be (Breakpoint Enable) para reativar um ou mais pontos de interrupção desativados.
Use o comando br (Breakpoint Renumber) 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 (Update Conditional Breakpoint) para alterar a condição sob a qual ocorre um ponto de interrupção condicional existente.
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
Sintaxe do ponto de interrupção