Compartilhar via


Usando 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 (Linguagem de Marcação do Depurador). A saída aprimorada com DML inclui links nos quais você pode clicar para executar comandos relacionados.

O 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 capaz de fornecer saída DML. O comando lmD exibe uma lista de módulos carregados. Como mostra a imagem a seguir, o nome de cada 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.

Captura de tela dos detalhes do módulo usbuhci no depurador.

Ativando e desativando o 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 saída DML por padrão.

Aprimoramentos do console

Todos os depuradores do Windows agora têm áreas de saída de comando que dão suporte à 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 do DML e somente quando executados em um console verdadeiro com o modo de cor habilitado. Os depuradores com sessões de E/S redirecionadas, ntsd –d ou remote.exe não exibirão nenhuma cor.

Modo de cor do depurador de console

Os depuradores de console, ntsd, cdb e kd agora têm a capacidade de exibir a saída colorida ao serem executados em um console verdadeiro. Este não é o padrão, requer que o modo de cor seja explicitamente ativado por meio 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á habilitado, 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 comandos do Windbg

No Windows 10 e posterior do Windbg, a janela do navegador de comandos analisa e exibe DML. Todas as tags, como <modificações de link>, <exec> e 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 comandos no WinDbg (clássico). Uma nova janela do navegador de comandos também pode ser aberta com Ctrl+N.

A janela do navegador de comandos imita deliberadamente o comportamento de um navegador da web, com um histórico suspenso e botões anterior/próximo. O menu suspenso do histórico exibe apenas os últimos vinte comandos, mas o histórico completo é mantido, portanto, voltando aos comandos, você pode obter o menu suspenso para exibir o histórico mais antigo.

Você pode ter quantas janelas de comando forem abertas de uma só vez. As janelas de comando persistem nos espaços de trabalho, mas salvam apenas o comando atual; a história não é mantida.

O menu Exibir WinDbg tem uma opção Definir Comando Iniciar do Navegador que permite que um usuário defina um comando preferencial para novas janelas do navegador para começar, como .dml_start. Este comando é salvo em áreas 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 é mantida em workspaces.

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. Comandos de longa duração não mostrarão nada até que tenham terminado.

Os links têm um menu de contexto de clique com o botão direito do mouse semelhante ao menu de contexto de clique com o 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 uso.

Clicar no ícone próximo ao canto superior direito da barra de título para definir as janelas do navegador de comandos para atualização automática ou manual. Os navegadores de atualização automática executarão automaticamente o comando nas alterações de 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 poderá ser usado para desativar a atualização automática.

Como os comandos são executados pelo mecanismo, não pela interface do usuário, os comandos específicos da interface do usuário, como .cls (Clear Screen), 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 for um cliente remoto, o comando será executado pelo servidor, não pelo cliente, e a saída do comando mostrará o estado do servidor.

As janelas do navegador de comandos podem executar qualquer comando do depurador, não precisa 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

O DML define um pequeno conjunto de marcas que podem ser incluídas na saída do comando. Um exemplo é a <tag de link> . Você pode experimentar a <marca de link> (e outras marcas DML) usando os comandos .dml_start e .browse. O comando .browse .dml_start filepath 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 Navegador de Comandos.

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

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

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