Uso del linguaggio di markup del debugger

I comandi del debugger possono fornire output in testo normale o in un formato avanzato che usa il linguaggio DML (Debugger Markup Language). L'output migliorato con DML include collegamenti che è possibile fare clic per eseguire comandi correlati.

DML è disponibile in Windows 10 e versioni successive.

Comandi con supporto DML

I comandi seguenti sono in grado di generare l'output DML:

Il comando lmD è un esempio di comando in grado di fornire l'output DML. Il comando lmD visualizza un elenco di moduli caricati. Come illustrato nell'immagine seguente, ogni nome di modulo è un collegamento su cui è possibile fare clic per ottenere informazioni più dettagliate sul modulo.

Screenshot dell'output del comando lmD nel debugger.

L'immagine seguente mostra il risultato del clic sul collegamento usbuhci . L'output include collegamenti aggiuntivi che consentono di esplorare altri dettagli del modulo usbuhci.

Screenshot dei dettagli del modulo usbuhci nel debugger.

Attivazione e disattivazione di DML

Il comando .prefer_dml attiva o disattiva DML. Quando DML è attivato (.prefer_dml 1), i comandi in grado di generare l'output DML genereranno l'output DML per impostazione predefinita.

Miglioramenti della console

Tutti i debugger Windows hanno ora aree di output dei comandi che supportano l'analisi DML. In windbg la finestra di comando supporta tutto il comportamento DML e mostrerà colori, stili di carattere e collegamenti. I debugger della console, ntsd, cdb e kd supportano solo gli attributi di colore di DML e l'unico in esecuzione in una vera console con la modalità colore abilitata. I debugger con I/O reindirizzato, ntsd -d o remote.exe sessioni non visualizzeranno colori.

Modalità colore del debugger della console

I debugger della console, ntsd, cdb e kd ora hanno la possibilità di visualizzare l'output colorato durante l'esecuzione in una vera console. Non è l'impostazione predefinita, richiede che la modalità colore sia abilitata in modo esplicito tramite tools.ini. Il nuovo token true|false> col_mode <in tools.ini controlla l'impostazione della modalità colore. Per altre informazioni sull'uso del file di tools.ini, vedere Configuring tools.ini

Quando la modalità colore è abilitata, il debugger può produrre output colorato. Per impostazione predefinita, la maggior parte dei colori non è impostata e per impostazione predefinita i colori correnti della console.

Finestra del browser dei comandi Windbg

In Windows 10 e versioni successive Windbg la finestra del browser dei comandi analizza e visualizza DML. Tutti i tag, ad <esempio link>, <exec> e modifiche di aspetto, sono completamente supportati.

Per avviare una sessione del browser dei comandi usando il menu in WinDbg, selezionare Visualizza, Visualizzatore comandi. Il comando> .browse <nella finestra di comando aprirà una nuova finestra del browser dei comandi ed eseguirà il comando specificato. Per altre informazioni, vedere Uso della finestra del browser dei comandi in WinDbg (versione classica). È anche possibile aprire una nuova finestra del browser dei comandi con CTRL+N.

La finestra del browser dei comandi simula deliberatamente il comportamento di un Web browser, con una cronologia a discesa e pulsanti precedenti/successivi. L'elenco a discesa cronologia visualizza solo gli ultimi venti comandi, ma la cronologia completa viene mantenuta, quindi tornando nei comandi è possibile ottenere l'elenco a discesa per visualizzare la cronologia precedente.

È possibile avere tutte le finestre di comando aperte contemporaneamente. Le finestre dei comandi vengono mantenute nelle aree di lavoro, ma salvano solo il comando corrente; la storia non viene mantenuta.

Il menu Visualizzazione WinDbg include un'opzione Imposta comando Start browser che consente a un utente di impostare un comando preferito per le nuove finestre del browser da avviare, ad esempio .dml_start. Questo comando viene salvato nelle aree di lavoro.

Una sotto-finestra Comandi recenti è disponibile nel menu Visualizza per contenere i comandi di interesse. Se si seleziona un comando recente, viene aperto un nuovo browser con il comando specificato. È presente una voce di menu nel menu di scelta rapida della finestra del browser che aggiunge il comando corrente della finestra all'elenco dei comandi recenti. L'elenco dei comandi recenti viene salvato in modo permanente nelle aree di lavoro.

La finestra del browser dei comandi esegue il comando in modo sincrono e quindi non visualizza l'output fino al completamento del comando. I comandi con esecuzione prolungata non mostreranno alcun elemento fino al termine.

I collegamenti hanno un menu di scelta rapida di clic con il pulsante destro del mouse simile al menu di scelta rapida di un Web browser. I collegamenti possono essere aperti in una nuova finestra del browser. Il comando di un collegamento può essere copiato negli Appunti per l'uso.

Fare clic sull'icona nell'angolo superiore destro della barra del titolo per impostare le finestre del browser dei comandi su aggiornamento automatico o aggiornamento manuale. I browser di aggiornamento automatico eseguiranno automaticamente il comando sulle modifiche dello stato del debugger. In questo modo l'output viene mantenuto attivo, ma a costo di eseguire il comando in tutte le modifiche. L'aggiornamento automatico è attivato per impostazione predefinita. Se il browser non deve essere attivo, è possibile usare il menu di scelta rapida della finestra per disabilitare l'aggiornamento automatico.

Poiché i comandi vengono eseguiti dal motore, non dall'interfaccia utente, comandi specifici dell'interfaccia utente, ad esempio .cls (Clear Screen) restituiranno un errore di sintassi in quando viene usato nelle finestre del browser dei comandi. Significa anche che quando l'interfaccia utente è un client remoto, il comando verrà eseguito dal server, non dal client e l'output del comando mostrerà lo stato del server.

Le finestre del browser dei comandi possono eseguire qualsiasi comando del debugger, non deve essere un comando che produce DML. È possibile usare le finestre del browser per avere un set arbitrario di comandi attivi per l'uso.

Personalizzazione di DML

DML definisce un piccolo set di tag che possono essere inclusi nell'output del comando. Un esempio è il tag di <collegamento> . È possibile sperimentare il tag di <collegamento> (e altri tag DML) usando i comandi .dml_start e .browse . Il comando .browse .dml_startfilepath esegue i comandi archiviati in un file DML. L'output viene visualizzato nella finestra Del browser dei comandi anziché nella normale finestra di comando.

Si supponga che il file c:\DmlExperiment.txt contenga le righe seguenti.

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

Il comando seguente visualizza il testo e il collegamento nella finestra Del browser comandi.

.browse .dml_start c:\Dml_Experiment.txt

Screenshot dell'output del file DML nella finestra Del browser dei comandi.

Se si fa clic sul collegamento List modules that begin with USB (Elenca moduli che iniziano con usb ), viene visualizzato un output simile all'immagine seguente.

Screenshot dell'elenco dei moduli dopo aver fatto clic sul collegamento nell'output del file DML.

Per una descrizione approfondita della personalizzazione DML e di un elenco completo dei tag DML, vedere Personalizzazione dell'output del debugger tramite DML.