Shell (shell dei comandi)

Il comando .shell avvia un processo della shell e reindirizza l'output al debugger o a un file specificato.

.shell [Options] [ShellCommand] 
.shell -i InFile [-o OutFile [-e ErrFile]] [Options] ShellCommand

Parametri

Infile
Specifica il percorso e il nome file di un file da utilizzare per l'input. Se si intende non offrire alcun input dopo il comando iniziale, è possibile specificare un trattino singolo (-) anziché InFile, senza spazio prima del trattino.

OutFile
Specifica il percorso e il nome file di un file da usare per l'output standard. Se -o **** OutFile viene omesso, l'output viene inviato alla finestra del comando del debugger. Se non si desidera che questo output venga visualizzato o salvato in un file, è possibile specificare un singolo trattino (-) anziché OutFile, senza spazio prima del trattino.

ErrFile
Specifica il percorso e il nome file di un file da usare per l'output degli errori. Se -e ErrFile viene omesso, l'output degli errori viene inviato alla stessa posizione dell'output standard. Se non si desidera che questo output venga visualizzato o salvato in un file, è possibile specificare un solo trattino (-) anziché ErrFile, senza spazio prima del trattino.

Le opzioni possono essere un numero qualsiasi delle opzioni seguenti:

-ci "Commands"
Elabora i comandi del debugger specificati e quindi passa il relativo output come file di input al processo avviato. I comandi possono essere un numero qualsiasi di comandi del debugger, separati da punti e virgola e racchiusi tra virgolette.

-x
Fa sì che qualsiasi processo generato venga scollegato completamente dal debugger. In questo modo è possibile creare processi che continueranno a essere eseguiti anche al termine della sessione di debug.

ShellCommand
Specifica la riga di comando dell'applicazione o il comando Microsoft MS-DOS da eseguire.

Ambiente

Articolo Descrizione
Modalità Modalità utente, modalità kernel
Target Live, crash dump
Piattaforme Tutte le date

Informazioni aggiuntive

Per altri modi di accedere alla shell dei comandi, vedere Uso dei comandi della shell.

Osservazioni:

Il comando .shell non è supportato quando l'output di un debugger in modalità utente viene reindirizzato al debugger del kernel. Per altre informazioni sul reindirizzamento dell'output al debugger del kernel (talvolta denominato NTSD su KD), vedere Controllo del debugger in modalità utente dal debugger del kernel.

L'intera riga dopo il comando .shell verrà interpretata come un comando di Windows (anche se contiene un punto e virgola). Questa riga non deve essere racchiusa tra virgolette. Deve essere presente uno spazio tra .shell e ShellCommand (gli spazi iniziali aggiuntivi vengono ignorati).

L'output del comando verrà visualizzato nella finestra Del comando debugger, a meno che non venga usato il parametro -o **** OutFile.

L'emissione di un comando .shell senza parametri attiverà la shell e la lascerà aperta. Tutti i comandi successivi verranno interpretati come comandi di Windows. Durante questo periodo, il debugger visualizzerà i messaggi che leggono il processo .shell potrebbe richiedere input> e il prompt winDbg verrà sostituito con un prompt di input>.< In alcuni casi, viene visualizzata una finestra del prompt dei comandi separata quando il debugger lascia aperta la shell. Questa finestra deve essere ignorata; tutti gli input e l'output verranno eseguiti tramite la finestra Di comando del debugger.

Per chiudere questa shell e tornare al debugger stesso, digitare exit o .shell_quit. Il comando .shell_quit è più potente, perché funziona anche se la shell è bloccata.

Questo comando non può essere usato durante il debug di CSRSS, perché non è possibile creare nuovi processi senza che CSRSS sia attivo.

È possibile usare il flag -ci per eseguire uno o più comandi del debugger e quindi passarne l'output a un processo della shell. Ad esempio, è possibile passare l'output dal comando !process 0 7 a uno script Perl usando il comando seguente:

0:000> .shell -ci "!process 0 7" perl.exe parsemyoutput.pl