Partilhar via


Utilizando a Linguagem de Marcação do Depurador

Os comandos do depurador podem fornecer saída em texto sem formatação ou em um formato aprimorado que usa DML (Debugger Markup Language). A saída aprimorada com DML inclui links nos quais você pode clicar para executar comandos relacionados.

DML está disponível no Windows 10 e posterior.

Comandos compatíveis com DML

Os seguintes comandos são capazes de gerar saída DML:

O comando lmD é um exemplo de um comando que é capaz de fornecer saída DML. O comando lmD exibe uma lista de módulos carregados. Como mostra a imagem a seguir, cada nome de módulo é um link no qual você pode clicar para obter informações mais detalhadas sobre o módulo.

Captura de tela da saída do comando lmD no depurador.

A imagem a seguir mostra o resultado de clicar no link usbuhci . A saída inclui links adicionais que permitem explorar mais detalhes do módulo usbuhci.

Screenshot dos detalhes do módulo usbuhci no depurador.

Ativar ou desativar DML

O comando .prefer_dml ativa ou desativa o DML. Quando o DML está ativado (.prefer_dml 1), os comandos capazes de gerar saída DML gerarão a saída DML por padrão.

Melhorias do console

Todos os depuradores do Windows agora têm áreas de saída de comando que suportam análise DML. No windbg a janela de comando suporta todo o comportamento DML e mostrará cores, estilos de fonte e links. Os depuradores de console, ntsd, cdb e kd, suportam apenas os atributos de cor de DML, e isso somente quando são executados em um console real com o modo de cor ativado. Os debuggers com sessões de E/S redirecionadas, ntsd –d ou remote.exe, não irão exibir nenhuma cor.

Modo de Cores do Depurador de Consola

Os depuradores de console, ntsd, cdb e kd agora têm a capacidade de exibir saída colorida quando executados em um console verdadeiro. Este não é o padrão, ele requer que o modo de cor seja explicitamente ativado via tools.ini. O novo token col_mode <true|false> no tools.ini controla a configuração do modo de cor. Para obter mais informações sobre como trabalhar com o arquivo tools.ini, consulte Configurando tools.ini

Quando o modo de cor está ativado, o depurador pode produzir uma saída colorida. Por padrão, a maioria das cores não é definida e, em vez disso, usa as cores atuais do console.

Janela do navegador de comando Windbg

No Windows 10 e posterior Windbg a janela do navegador de comando analisa e exibe DML. Todas as tags, como <link>, <exec> e modificações de aparência, são totalmente suportadas.

Para iniciar uma sessão do navegador de comandos usando o menu no WinDbg, selecione Exibir, Navegador de comandos. O comando> .browse <na janela de comando abrirá uma nova janela do navegador de comandos e executará o comando fornecido. Para obter mais informações, consulte Usando a janela do navegador de comando no WinDbg (clássico). Uma nova janela de comando do navegador também pode ser aberta com Ctrl+N.

A janela do navegador de comandos deliberadamente imita o comportamento de um navegador da Web, com um histórico em lista pendente e botões de navegação anterior/próximo. A lista suspensa de histórico exibe apenas os últimos vinte comandos, mas o histórico completo é mantido. Assim, ao retroceder nos comandos, é possível fazer com que a lista suspensa exiba um histórico mais antigo.

Você pode ter quantas janelas de comando quiser abertas ao mesmo tempo. As janelas de comando persistem nos espaços de trabalho, mas salvam apenas o comando atual; a história não se mantém.

O menu WinDbg View tem uma opção set Browser Start Command que permite que um usuário defina um comando preferido para novas janelas do navegador para começar, como .dml_start. Este comando é guardado em espaços de trabalho.

Uma subjanela Comandos recentes está disponível no menu Exibir para armazenar comandos de interesse. Selecionar um comando recente abre um novo navegador com o comando fornecido. Há um item de menu no menu de contexto da janela do navegador que adiciona o comando atual da janela à lista de comandos recentes. A lista de comandos recentes é armazenada nos espaços de trabalho.

A janela do navegador de comandos executa o comando de forma síncrona e, portanto, não exibe a saída até que o comando seja concluído. Os comandos de longa execução não mostrarão nada até que tenham terminado.

Os links têm um menu de contexto do botão direito do mouse semelhante ao menu de contexto do botão direito do mouse em um navegador da Web. Os links podem ser abertos em uma nova janela do navegador. O comando de um link pode ser copiado para a área de transferência para ser usado.

Clique no ícone próximo ao canto superior direito da barra de título para definir as janelas do navegador de comando como atualização automática ou manual. Os navegadores com atualização automática executarão o seu comando novamente quando houver alterações no estado do depurador. Isso mantém a saída ativa, mas ao custo de executar o comando em todas as alterações. A atualização automática está ativada por padrão. Se o navegador não precisar estar ativo, o menu de contexto da janela pode ser usado para desativar a atualização automática.

Como os comandos são executados pelo mecanismo, não pela interface do usuário, comandos específicos da interface do usuário, como .cls (Limpar tela), retornarão um erro de sintaxe quando usados em janelas do navegador de comandos. Isso também significa que quando a interface do usuário é um cliente remoto, o comando será executado pelo servidor, não pelo cliente, e a saída do comando mostrará o estado do servidor.

Janelas do navegador de comandos podem executar qualquer comando do depurador, não tem de ser um comando que produza DML. Você pode usar as janelas do navegador para ter um conjunto arbitrário de comandos ativos para uso.

Personalizando DML

DML define um pequeno conjunto de tags que podem ser incluídas na saída do comando. Um exemplo é a <tag link> . Você pode experimentar a <tag link> (e outras tags DML) usando os comandos .dml_start e .browse . O comando .browse .dml_startfilepath executa os comandos armazenados em um arquivo DML. A saída é exibida na janela do navegador de comandos em vez da janela de comando normal.

Suponha que o arquivo c:\DmlExperiment.txt contenha as seguintes linhas.

My DML Experiment
<link cmd="lmD musb*">List modules that begin with usb.</link>

O comando a seguir exibe o texto e o link na janela do Navegador de Comandos.

.browse .dml_start c:\Dml_Experiment.txt

Captura de tela da saída do arquivo DML na janela do Command Browser.

Se você clicar na lista de módulos que começam com o link usb , você verá uma saída semelhante à imagem a seguir.

Captura de tela da lista de módulos depois de clicar no link na saída do arquivo DML.

Para obter uma discussão completa sobre a personalização do DML e uma lista completa de tags DML, consulte Personalizando a saída do depurador usando DML.