Condividi tramite


Uso dei comandi del debugger

In questo modo viene descritto l'uso dei comandi del debugger. WinDbg è un debugger che può essere usato per analizzare i dump di arresto anomalo del sistema, eseguire il debug di codice in modalità utente live e in modalità kernel ed esaminare i registri e la memoria della CPU. Per altre informazioni, vedere Panoramica di WinDbg.

Per installare il debugger, vedere Installare il debugger di Windows.

Per iniziare a usare WinDbg, vedere Introduzione al debug di Windows.

Finestra di comando del debugger WinDbg

Per WinDbg, la finestra "Debugger Command window" fa riferimento alla finestra con etichetta "Command" nella barra del titolo. Questa finestra contiene due riquadri:

  • Nel riquadro inferiore piccolo immettere i comandi.

  • Nel riquadro superiore di grandi dimensioni è possibile visualizzare l'output dei comandi.

Questa finestra è sempre aperta all'inizio di una sessione di debug. È possibile riaprire o passare a questa finestra selezionando Comando dal menu Visualizza , premendo ALT+1 o selezionando il pulsante Comando (ALT+1) (Screenshot del pulsante Finestra di comando debugger.

È possibile usare i tasti FRECCIA SU e FRECCIA GIÙ per scorrere la cronologia dei comandi. Quando viene visualizzato un comando precedente, è possibile modificarlo e quindi premere INVIO per eseguire il comando precedente (o la versione modificata del comando precedente). Il cursore non deve trovarsi alla fine della riga per il corretto funzionamento di questa procedura.

KD o CDB

Per KD o CDB, la finestra "Debugger Command window" fa riferimento all'intera finestra. Immettere i comandi al prompt nella parte inferiore della finestra. Se i comandi hanno un output, la finestra visualizza l'output e quindi visualizza di nuovo il prompt.

Prompt della finestra di comando del debugger

Quando si esegue il debug in modalità utente, il prompt nella finestra Comando debugger è simile all'esempio seguente.

2:005>

Nell'esempio precedente 2 è il numero di processo corrente e 005 è il numero di thread corrente.

Se si collega il debugger a più computer, il numero di sistema viene incluso prima del processo e del numero di thread, come nell'esempio seguente.

3:2:005>

In questo esempio 3 è il numero di sistema corrente, 2 è il numero di processo corrente e 005 è il numero di thread corrente.

Quando si esegue il debug in modalità kernel in un computer di destinazione con un solo processore, il prompt sarà simile all'esempio seguente.

kd>

Tuttavia, se il computer di destinazione dispone di più processori, il numero del processore corrente viene visualizzato prima del prompt, come nell'esempio seguente.

0: kd>

Se il debugger sta elaborando un comando rilasciato in precedenza, i nuovi comandi non verranno temporaneamente elaborati, anche se possono essere aggiunti al buffer dei comandi. Inoltre, puoi comunque usare i tasti di controllo in KD e CDB e puoi comunque usare i comandi di menu e i tasti di scelta rapida in WinDbg. Quando KD o CDB si trova in questo stato occupato, non viene visualizzata alcuna richiesta. Quando WinDbg è in questo stato occupato, al posto del prompt verrà visualizzato l'indicatore seguente:

*BUSY*

È possibile usare il comando pcmd (Imposta comando prompt) per aggiungere testo a questo prompt.

Tipi di comandi

WinDbg, KD e CDB supportano un'ampia gamma di comandi. Alcuni comandi vengono condivisi tra i debugger e alcuni sono disponibili solo in uno o due dei debugger.

Alcuni comandi sono disponibili solo nel debug in tempo reale e altri comandi sono disponibili solo quando si esegue il debug di un file di dump.

Alcuni comandi sono disponibili solo durante il debug in modalità utente e altri comandi sono disponibili solo durante il debug in modalità kernel.

Alcuni comandi sono disponibili solo quando la destinazione è in esecuzione in determinati processori. Per altre informazioni su tutti i comandi e sulle relative restrizioni, vedere Comandi del debugger.

Modifica, ripetizione e annullamento dei comandi

È possibile usare chiavi di modifica standard quando si immette un comando:

  • Usare i tasti FRECCIA SU e FRECCIA GIÙ per trovare i comandi precedenti.

  • Modificare il comando corrente con i tasti BACKSPACE, DELETE, INSERT e FRECCIA SINISTRA e FRECCIA DESTRA.

  • Premere ESC per cancellare la riga corrente.

È possibile premere TAB per completare automaticamente la voce di testo. In uno dei debugger premere TAB dopo aver immesso almeno un carattere per completare automaticamente un comando. Premere ripetutamente TAB per scorrere le opzioni di completamento del testo e tenere premuto MAIUSC e premere TAB per scorrere indietro. È anche possibile usare caratteri jolly nel testo e premere TAB per espandere il set completo di opzioni di completamento del testo. Ad esempio, se si digita fo*!ba e quindi si preme TAB, il debugger si espande fino al set di tutti i simboli che iniziano con "ba", in tutti i moduli con nomi di modulo che iniziano con "fo". Come altro esempio, è possibile completare tutti i comandi di estensione con "prcb" in essi digitando !*prcb e quindi premendo TAB.

Quando si usa il tasto TAB per eseguire il completamento del testo, se il frammento di testo inizia con un punto (.), il testo viene confrontato con un comando punto. Se il frammento di testo inizia con un punto esclamativo (!), il testo viene confrontato con un comando di estensione. In caso contrario, il testo viene confrontato con un simbolo. Quando si usa il tasto TAB per immettere i simboli, premendo TAB viene completato il codice e i simboli di tipo e i nomi dei moduli. Se non è evidente alcun nome di modulo, i simboli locali e i nomi dei moduli vengono completati. Se viene specificato un modulo o un modello di modulo, il completamento del simbolo completa il codice e i simboli di tipo da tutte le corrispondenze.

È possibile selezionare e tenere premuto (o fare clic con il pulsante destro del mouse) nella finestra Di comando del debugger per incollare automaticamente il contenuto degli Appunti nel comando digitato.

La lunghezza massima del comando è di 4096 caratteri. Tuttavia, se si controlla il debugger in modalità utente dal debugger del kernel, la lunghezza massima della riga è di 512 caratteri.

In CDB e KD premere il tasto INVIO per ripetere il comando precedente. In WinDbg è possibile abilitare o disabilitare questo comportamento. Per altre informazioni su questo comportamento, vedere INVIO (ripeti ultimo comando).

Se l'ultimo comando inviato presenta uno schermo lungo e si vuole tagliarlo, usare il tasto CTRL+C in CDB o KD. In WinDbg usare Debug | Interrompere o premere CTRL+INTERR.

Nel debug in modalità kernel, è possibile annullare i comandi dalla tastiera del computer di destinazione premendo CTRL+C.

È possibile usare il comando .cls (Clear Screen) per cancellare tutto il testo dalla finestra Di comando del debugger. Questo comando cancella l'intera cronologia dei comandi. In WinDbg è possibile cancellare la cronologia dei comandi usando Modifica | Deselezionare il comando Output comando o selezionando Cancella output comando dal menu di scelta rapida della finestra Di comando debugger.

Sintassi delle espressioni

Molti comandi e comandi di estensione accettano espressioni come argomenti. Il debugger valuta queste espressioni prima di eseguire il comando . Per altre informazioni sulle espressioni, vedere Valutazione di espressioni.

Alias

Gli alias sono macro di testo che è possibile usare per evitare di dover digitare frasi complesse. Esistono due tipi di alias. Per altre informazioni sugli alias, vedere Uso degli alias.

Comandi ripetuti automaticamente

È possibile usare i comandi seguenti per ripetere un'azione o eseguire in modo condizionale altri comandi:

Per altre informazioni su ogni comando, vedere gli argomenti relativi ai singoli comandi.

Controllo dello scorrimento

È possibile usare la barra di scorrimento per visualizzare i comandi precedenti e il relativo output.

Quando si usa CDB o KD, qualsiasi voce della tastiera scorre automaticamente verso il basso fino alla parte inferiore della finestra Comando debugger.

In WinDbg, la visualizzazione scorre automaticamente verso il basso fino alla fine ogni volta che un comando produce output o si preme INVIO. Se si desidera disabilitare questo scorrimento automatico, selezionare le opzioni nel menu Visualizza e quindi deselezionare la casella di controllo Scorrimento automatico.

Funzionalità di testo winDbg

In WinDbg è possibile usare diverse funzionalità aggiuntive per modificare la modalità di visualizzazione del testo nella finestra Di comando del debugger. È possibile accedere ad alcune di queste funzionalità nella finestra WinDbg, alcune nel menu di scelta rapida nella finestra Comando debugger e alcune selezionando l'icona di menu appropriata.

  • Il comando a capo automatico del menu di scelta rapida attiva e disattiva lo stato di ritorno a capo automatico. Questo comando influisce sull'intera finestra, non solo sui comandi usati dopo la modifica di questo stato. Poiché molti comandi ed estensioni producono visualizzazioni formattate, in genere non è consigliabile eseguire il ritorno a capo automatico.

  • Modifica | Il comando di menu Aggiungi all'output dei comandi aggiunge un commento nella finestra Di comando del debugger. Il comando Aggiungi all'output del comando nel menu di scelta rapida ha lo stesso effetto.

  • È possibile personalizzare i colori utilizzati per il testo e lo sfondo della finestra Di comando del debugger. È possibile specificare colori diversi per diversi tipi di testo. Ad esempio, è possibile visualizzare l'output del registro automatico in un colore, i messaggi di errore in un altro colore e i messaggi DbgPrint in un terzo colore.

  • È possibile usare tutte le funzionalità comuni alle finestre delle informazioni di debug di WinDbg, ad esempio la personalizzazione dei tipi di carattere e l'uso di comandi di modifica speciali.

Debug remoto

Quando si esegue il debug remoto tramite il debugger, il client di debug può accedere a un numero limitato di comandi. Per modificare il numero di comandi a cui il client può accedere, usare l'opzione della riga di comando -clines o la variabile di ambiente _NT_DEBUG_HISTORY_SIZE.