Поделиться через


.shell (командная оболочка)

Команда .shell запускает процесс оболочки и перенаправляет выходные данные в отладчик или в указанный файл.

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

Параметры

InFile
Указывает путь и имя файла, который будет использоваться для ввода. Если вы планируете не предоставлять входные данные после начальной команды, можно указать один дефис (-) вместо InFile без пробела перед дефисом.

OutFile
Указывает путь и имя файла, которые будут использоваться для стандартных выходных данных. Если значение -o **** OutFile опущено, выходные данные отправляются в окно команды отладчика. Если вы не хотите, чтобы эти выходные данные отображались или сохранены в файле, можно указать один дефис (-) вместо OutFile без пробела перед дефисом.

ErrFile
Указывает путь и имя файла, который будет использоваться для вывода ошибок. Если значение -e ErrFile опущено, выходные данные ошибок отправляются в то же место, что и стандартные выходные данные. Если вы не хотите, чтобы эти выходные данные отображались или сохранены в файле, можно указать один дефис (-) вместо ErrFile без пробела перед дефисом.

Параметры могут быть любым количеством следующих параметров:

-ci "Команды"
Обрабатывает указанные команды отладчика, а затем передает выходные данные в виде входного файла в запущенный процесс. Команды могут быть любым количеством команд отладчика, разделенных точкой с запятой, и заключены в кавычки.

-x
Приводит к тому, что отладчик полностью отсоединяется от отладчика. Это позволяет создавать процессы, которые будут продолжать выполняться даже после завершения сеанса отладки.

ShellCommand
Указывает командную строку приложения или команду Microsoft MS-DOS, выполняемую.

Среда

Позиция Description
Режимы Режим пользователя, режим ядра
Целевые объекты Динамический, аварийный дампа
Платформы Все

Дополнительная информация

Другие способы доступа к командной оболочке см. в разделе "Использование команд оболочки".

Замечания

Команда .shell не поддерживается, если выходные данные отладчика пользовательского режима перенаправляются в отладчик ядра. Дополнительные сведения о перенаправлении выходных данных в отладчик ядра (иногда называется NTSD по KD), см. в разделе "Управление отладчиком пользовательского режима" из отладчика ядра.

Вся строка после команды .shell будет интерпретирована как команда Windows (даже если она содержит точку с запятой). Эта строка не должна быть заключена в кавычки. Между оболочкой и ShellCommand должно быть пространство (дополнительные ведущие пробелы игнорируются).

Выходные данные команды будут отображаться в окне команды отладчика, если не используется параметр -o **** OutFile.

Выполнение команды .shell без параметров активирует оболочку и оставляет ее открытой. Все последующие команды будут интерпретированы как команды Windows. В течение этого времени отладчик будет отображать сообщения, считывающие <процесс .shell, может потребовать входных данных>, и запрос WinDbg будет заменен запросом ввода> . Иногда появляется отдельное окно командной строки, когда отладчик покидает оболочку. Это окно должно игнорироваться; все входные и выходные данные будут выполнены в окне команды отладчика.

Чтобы закрыть эту оболочку и вернуться к самому отладчику, введите выход или .shell_quit. (Команда .shell_quit более мощна, так как она работает, даже если оболочка заморожена.)

Эту команду нельзя использовать при отладке CSRSS, так как новые процессы не могут быть созданы без активного использования CSRSS.

Флаг -ci можно использовать для выполнения одной или нескольких команд отладчика, а затем передать выходные данные процессу оболочки. Например, вы можете передать выходные данные из команды !process 0 7 в скрипт Perl с помощью следующей команды:

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