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 será chamado de ponto de interrupção adiado, 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 nenhuma carga específica de um módulo. Toda vez que um novo aplicativo é carregado, ele é verificado quanto a esse nome de rotina. Se essa rotina for exibida, 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 será imediatamente resolvido para um endereço.

Há três diferenças principais entre os pontos de interrupção bp e 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 permanecerá associado ao valor simbólico (geralmente, um símbolo mais um deslocamento) que foi usado, e ele rastreará esse local simbólico mesmo se seu endereço mudar.

  • 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 persistirão após carregamentos e descarregamentos repetidos.

  • Os pontos de interrupção que você define bp não são salvos em espaços de trabalho do WinDbg. Os pontos de interrupção definidos com bu são salvos nos espaços de trabalho.

Controlar 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 bm (Definir Ponto de Interrupção de Símbolo) quando a opção /d é incluída. Pontos de interrupção não resolvidos podem ser criados com o comando bu (Definir Ponto de Interrupção Não Resolvido) ou bm quando a opção /d não está incluída. 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 lista desses comandos, confira 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, confira Editar | Pontos de interrupção. Quando você define um ponto de interrupção usando o mouse na janela Desmontagem ou na Janela de origem do WinDbg, o depurador cria um ponto de interrupção não resolvido.