Compartilhar via


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

Se um ponto de interrupção for definido para um nome de rotina que não foi carregado, o ponto de interrupção é chamado de ponto de interrupção deferido, virtual ou não resolvido. (Esses termos são usados de forma intercambiável.) Pontos de interrupção não resolvidos não estão associados a qualquer carga específica de um módulo. Sempre 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 descarregado e recarregado posteriormente, esse ponto de interrupção não desaparecerá. Por outro lado, um ponto de interrupção definido com bp é resolvido imediatamente para um endereço.

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

  • Um local de ponto de interrupção bp é sempre convertido em um 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 interrupção bu permanece associado ao valor simbólico (normalmente um símbolo mais um deslocamento) que foi usado, e acompanha esse local simbólico mesmo se seu endereço for 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 descarregamentos e cargas repetidos.

  • Os pontos de interrupção definidos com bp não são salvos em workspaces do WinDbg. Os pontos de interrupção definidos com bu são salvos em workspaces.

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 o comando bm (Definir Ponto de Interrupção de Símbolo) quando o comutador /d é incluído. Pontos de interrupção não resolvidos podem ser criados com o comando bu (Definir Ponto de Interrupção Não Resolvido) ou o comando bm quando o comutador /d não está incluído. Os comandos que desabilitam, habilitam e modificam pontos de interrupção se aplicam 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 listagem 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". Essa 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 De origem, o depurador cria um ponto de interrupção não resolvido.