Мониторинг выхода автоматического процесса
Начиная с Windows 7, вы можете использовать вкладку Автоматическое завершение процесса в GFlags, чтобы ввести имя процесса, который требуется отслеживать для автоматического выхода.
В контексте этой функции мониторинга мы используем термин автоматический выход , чтобы означать, что отслеживаемый процесс завершается одним из следующих способов.
Самостоятельное завершение
Отслеживаемый процесс завершается путем вызова ExitProcess.
Завершение перекрестного процесса
Второй процесс завершает отслеживаемый процесс путем вызова TerminateProcess.
Функция мониторинга не обнаруживает нормальное завершение процесса, которое происходит при выходе из последнего потока процесса. Функция мониторинга не обнаруживает завершение процесса, инициированное кодом в режиме ядра.
Чтобы зарегистрировать процесс для мониторинга автоматического выхода, откройте вкладку Автоматический выход из процесса в GFlags. Введите имя процесса в поле Изображение и нажмите клавишу TAB . Установите флажок Включить мониторинг выхода из автоматического процесса и нажмите кнопку Применить. Это задает флаг FLG_MONITOR_SILENT_PROCESS_EXIT в следующей записи реестра.
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ProcessName\GlobalFlag
Дополнительные сведения об этом флаге см. в разделе Включение автоматического мониторинга выхода из процесса.
Дополнительные сведения об использовании вкладки "Автоматический выход из процесса " в GFlags см. в разделе Настройка мониторинга выхода из автоматического процесса.
На вкладке Автоматическое завершение процесса GFlags можно настроить действия, которые будут выполняться при автоматическом завершении отслеживаемого процесса. Вы можете настроить уведомления, ведение журнала событий и создание файлов дампа. Можно указать процесс, который будет запускаться при обнаружении автоматического выхода, а также указать список модулей, которые монитор будет игнорировать. Некоторые из этих параметров доступны как глобально, так и для отдельных приложений. Глобальные параметры применяются ко всем процессам, зарегистрированным для автоматического мониторинга выхода. Параметры приложения применяются к отдельному процессу и переопределяют глобальные параметры.
Глобальные параметры хранятся в реестре в следующем разделе.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit
Параметры приложения хранятся в реестре в следующем разделе.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\ProcessName
Режим отчетов
Параметр Режим отчетов доступен как параметр приложения, но не как глобальный параметр. Для настройки режима создания отчетов можно использовать следующие поля проверка.
Запуск процесса мониторингаВключение сбора дамповВключить уведомление Включить Запись реестра ReportingMode представляет собой побитовую или из следующих флагов.
Флаг | Значение | Значение |
---|---|---|
LAUNCH_MONITORPROCESS | 0x1 | При обнаружении автоматического выхода запускается процесс мониторинга (указанный в поле Процесс мониторинга ). |
LOCAL_DUMP | 0x2 | При обнаружении автоматического выхода создается файл дампа для отслеживаемого процесса. В случае завершения нескольких процессов также создается файл дампа для процесса, вызвавшего завершение. |
УВЕДОМЛЕНИЯ | 0x4 | При обнаружении автоматического выхода отображается всплывающее уведомление. |
Игнорировать самостоятельные выходы
Параметр Игнорировать самостоятельные выходы доступен как параметр приложения, но не как глобальный параметр. Вы можете использовать поле Игнорировать самостоятельные выходы проверка, чтобы указать, игнорируются ли самостоятельные выходы.
Запись реестра IgnoreSelfExits имеет одно из следующих значений.
Значение | Значение |
---|---|
0x0 | Обнаружение и реагирование на самостоятельное завершение и завершение перекрестного процесса. |
0x1 | Игнорировать самостоятельное завершение. Обнаружение завершения перекрестного процесса и реагирование на них. |
Мониторинг процесса
Процесс мониторинга можно указать, введя имя процесса вместе с параметрами командной строки в текстовом поле Мониторинг процесса . В командной строке можно использовать следующие переменные.
Varaible | Значение |
---|---|
%e | Идентификатор процесса выхода. Это отслеживаемый процесс, который завершился автоматически. |
%i | Идентификатор инициирующего процесса. В случае самостоятельного завершения это то же самое, что и процесс выхода. В случае завершения перекрестного процесса это идентификатор процесса, вызвавшего завершение. |
%t | Идентификатор инициирующего потока. Это поток, который вызвал завершение. |
%c | Код состояния, передаваемый в ExitThread или TerminateThread . |
Например, следующее значение для monitor Process указывает, что при автоматическом выходе WinDbg запускается и присоединяется к процессу выхода.
windbg -p %e
Командная строка Процесса мониторинга хранится в записи реестра MonitorProcess .
Расположение папки дампа
Вы можете использовать текстовое поле Расположение папки дампа , чтобы указать расположение файлов дампа, которые записываются при обнаружении автоматического выхода.
Строка, введенная в поле Расположение папки дампа , хранится в записи реестра LocalDumpFolder .
Если расположение папки дампа не указано, файлы дампа записываются в расположение по умолчанию— %TEMP%\Silent Process Exit.
Размер папки дампа
Чтобы указать максимальное количество файлов дампа, которые можно записать в папку дампа, можно использовать текстовое поле Размер папки дампа . Введите это значение как десятичное целое число.
Значение, введенное для параметра Размер папки дампа , хранится в записи реестра MaxNumberOfDumpFiles .
По умолчанию существует ограничение в десять файлов дампа, которые можно записать.
Тип дампа
В раскрывающемся списке Тип дампа можно указать тип файла дампа (Micro, Mini, Heap или Custom), который записывается при обнаружении автоматического выхода.
Тип дампа хранится в записи реестра DumpType , которая представляет собой побитовую ИЛИ членов перечисления MINIDUMP_TYPE . Это перечисление определено в файле dbghelp.h, который входит в пакет средств отладки для Windows.
Например, предположим, что вы выбрали тип дампа Micro и видите, что запись реестра DumpType имеет значение 0x88. Значение 0x88 представляет собой побитовое ЗНАЧЕНИЕ ИЛИ из двух следующих MINIDUMP_TYPE значений перечисления.
MiniDumpFilterModulePaths: 0x00000080
MiniDumpFilterMemory: 0x00000008
Если выбран тип дампа Custom, введите собственные побитовые или значения перечисления MINIDUMP_TYPE в поле Тип пользовательского дампа . Введите это значение как десятичное целое число.
Список игнорируемого модуля
С помощью поля Список игнорируемых модулей можно указать список модулей, которые будут игнорироваться при обнаружении автоматического выхода. Если отслеживаемый процесс завершается одним из модулей в этом списке, автоматический выход игнорируется.
Список модулей, указанный в поле Список игнорируемых модулей , хранится в записи реестра ModuleIgnoreList .
Чтение отчетов о выходе из процесса в Просмотр событий
Когда отслеживаемый процесс завершается автоматически, монитор создает запись в Просмотр событий. Чтобы открыть Просмотр событий, введите команду eventvwr.msc. Перейдите в раздел Приложение журналов > Windows. Найдите записи журнала с монитором выхода из источника процесса.