.shell (Command Shell)
La commande .shell lance un processus shell et redirige sa sortie vers le débogueur, ou vers un fichier spécifié.
.shell [Options] [ShellCommand]
.shell -i InFile [-o OutFile [-e ErrFile]] [Options] ShellCommand
Paramètres
Infile
Spécifie le chemin et le nom de fichier d’un fichier à utiliser en entrée. Si vous n’avez pas l’intention d’offrir d’entrée après la commande initiale, vous pouvez spécifier un simple tiret (-) à la place de InFile, sans espace avant le tiret.
OutFile
Spécifie le chemin et le nom de fichier d’un fichier à utiliser pour la sortie standard. Si -o **** OutFile est omis, la sortie est envoyée à la fenêtre de commande du débogueur. Si vous ne voulez pas que cette sortie soit affichée ou sauvegardée dans un fichier, vous pouvez spécifier un simple tiret (-) à la place de OutFile, sans espace avant le tiret.
ErrFile
Spécifie le chemin et le nom de fichier d’un fichier à utiliser pour la sortie d’erreur. Si -e ErrFile est omis, la sortie d’erreur est envoyée au même endroit que la sortie standard. Si vous ne voulez pas que cette sortie soit affichée ou sauvegardée dans un fichier, vous pouvez spécifier un simple tiret (-) à la place de ErrFile, sans espace avant le tiret.
Options Peut être un nombre quelconque des options suivantes :
-ci « Commandes »
Traite les commandes de débogueur spécifiées, puis passe leur sortie en tant que fichier d’entrée au processus lancé. Commands peuvent être un nombre quelconque de commandes de débogueur, séparées par des points-virgules, et incluses entre guillemets.
-x
Fait en sorte que tout processus en cours de lancement soit complètement détaché du débogueur. Cela vous permet de créer des processus qui continueront de s’exécuter même après la fin de la session de débogage.
ShellCommand
Spécifie la ligne de commande de l’application ou la commande MS-DOS Microsoft à exécuter.
Environnement
Élément | Description |
---|---|
Modes | Mode utilisateur, mode noyau |
Targets | Live, vidage de la mémoire |
Platforms | Tous |
Informations supplémentaires
Pour d’autres façons d’accéder à l’invite de commandes, veuillez consulter la section Utilisation de commandes shell.
Notes
La commande .shell n’est pas prise en charge lorsque la sortie d’un débogueur en mode utilisateur est redirigée vers le débogueur du noyau. Pour plus d’informations sur la redirection de la sortie vers le débogueur du noyau (parfois appelé NTSD sur KD), veuillez consulter la section Contrôle du débogueur en mode utilisateur à partir du débogueur du noyau.
Toute la ligne après la commande .shell sera interprétée comme une commande Windows (même si elle contient un point-virgule). Cette ligne ne doit pas être encadrée par des guillemets. Il doit y avoir un espace entre .shell et ShellCommand (les espaces initiaux supplémentaires sont ignorés).
La sortie de la commande apparaîtra dans la fenêtre de commande du débogueur, sauf si le paramètre -o **** OutFile est utilisé.
Lancer une commande .shell sans paramètres activera le shell et le laissera ouvert. Toutes les commandes ultérieures seront interprétées comme des commandes Windows. Pendant ce temps, le débogueur affichera des messages indiquant <le processus .shell process peut avoir besoin d’une entrée>, et le prompt de WinDbg sera remplacé par un prompt Input>. Parfois, une fenêtre d’invite de commandes séparée apparaîtra lorsque le débogueur laissera le shell ouvert. Cette fenêtre doit être ignorée ; toute entrée et sortie se fera par la fenêtre de commande du débogueur.
Pour fermer ce shell et revenir au débogueur lui-même, saisissez exit ou .shell_quit. (La commande .shell_quit est plus puissante, car elle fonctionne même si le shell est arrêté).
Cette commande ne peut pas être utilisée lors du débogage de CSRSS, car de nouveaux processus ne peuvent pas être créés sans que CSRSS soit actif.
Vous pouvez utiliser le drapeau -ci pour exécuter une ou plusieurs commandes de débogueur, puis passer leur sortie à un processus shell. Par exemple, vous pourriez passer la sortie de la commande !process 0 7 à un script Perl en utilisant la commande suivante:
0:000> .shell -ci "!process 0 7" perl.exe parsemyoutput.pl