Partilhar via


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

Se um ponto de interrupção for definido para um nome de rotina que não tenha sido carregado, o ponto de interrupção será chamado de ponto de interrupção adiado, virtual ou não resolvido . (Estes termos são usados indistintamente.) Os pontos de interrupção não resolvidos não estão associados a nenhuma carga específica de um módulo. Toda vez que um novo aplicativo é carregado, ele é verificado para esse nome de rotina. Se essa rotina aparecer, o depurador calculará o endereço codificado real do ponto de interrupção virtual e habilitará o ponto de interrupção.

Se você definir um ponto de interrupção usando o comando bu , o ponto de interrupção será automaticamente considerado não resolvido. Se esse ponto de interrupção estiver em um módulo carregado, o ponto de interrupção ainda estará habilitado e funcionará normalmente. No entanto, se o módulo for posteriormente descarregado e recarregado, esse ponto de interrupção não desaparecerá. Por outro lado, um ponto de interrupção definido com bp é imediatamente convertido em um endereço.

Existem três diferenças principais entre os pontos de interrupção bp e bu :

  • Um local de ponto de interrupção bp é sempre convertido num endereço. Se uma alteração de módulo mover o código no qual um ponto de interrupção bp foi definido, o ponto de interrupção permanecerá no mesmo endereço. Por outro lado, um ponto de paragem bu permanece associado ao valor simbólico (normalmente um símbolo mais um deslocamento) que foi usado, e acompanha esse local simbólico mesmo que o seu endereço seja alterado.

  • Se um endereço de ponto de interrupção bp for encontrado em um módulo carregado e se esse módulo for descarregado posteriormente, o ponto de interrupção será removido da lista de pontos de interrupção. Por outro lado, os pontos de interrupção bu persistem após descargas e cargas repetidas.

  • Os pontos de interrupção definidos com bp não são salvos em espaços de trabalho WinDbg. Os pontos de interrupção definidos com bu são salvos em espaços de trabalho.

Controlando pontos de interrupção de endereço e pontos de interrupção não resolvidos

Os pontos de interrupção de endereço podem ser criados com o comando bp (Definir Ponto de Interrupção) ou com o comando bm (Definir Ponto de Interrupção de Símbolo) quando a opção /d está incluída. Pontos de interrupção não resolvidos podem ser criados com o comando bu (set Unresolved Breakpoint) ou o comando bm quando a opção /d não está incluída. Os comandos que desabilitam, habilitam e modificam pontos de interrupção aplicam-se a todos os tipos de pontos de interrupção. Os comandos que exibem uma lista de pontos de interrupção incluem todos os pontos de interrupção e indicam o tipo de cada um. Para obter uma lista desses comandos, consulte Métodos de controle de pontos de interrupção.

A caixa de diálogo Pontos de interrupção do WinDbg exibe todos os pontos de interrupção, indicando pontos de interrupção não resolvidos com a notação "u". Esta caixa de diálogo pode ser usada para modificar qualquer ponto de interrupção. A caixa de texto Comando nesta caixa de diálogo pode ser usada para criar qualquer tipo de ponto de interrupção; Se o tipo for omitido, um ponto de interrupção não resolvido será criado. Para obter detalhes, consulte Editar | Pontos de interrupção. Quando você define um ponto de interrupção usando o mouse na janela Desmontagem do WinDbg ou na janela Origem, o depurador cria um ponto de interrupção não resolvido.