Глава 4. Монитор процесса

Дэвид Соломон, мой соавтор Windows Internals, был нанят, чтобы поставить класс внутренностей Microsoft Windows для инженеров службы поддержки ядра в главном производителе укомплектованного оборудования Windows (OEM). За несколько месяцев до класса, компания спросила, интегрирует ли он один из ее внутренних инструментов анализа ядра в обучение. Дэйв думал, что ­независимо от того, что инструмент, который они имели, должно быть достаточно легко изучить, и он заряжает много денег, таким образом, он согласился.

Конечно, Дэйв ожидал до полета ночь прежде, чтобы даже потрудиться смотреть на инструмент. После наблюдения нескольких эпизодов Звездного пути на его ноутбуке он решил отдохнуть и запустил инструмент, только чтобы быть приветствованным с сообщением об ошибке: "Эта утилита требует [главной OEM Windows] аппаратные средства." Он использовал ноутбук различного поставщика, таким образом, его остановленная основа. Как он собирался обнаружиться утром и признать, что он обнаружил только несколькими часами ранее, что не мог выполнить инструмент?

Он начинал паниковать, вспыхивая в пот и вызывая стюардессу, чтобы принести ему жесткий напиток (фактически, чтобы снова наполнить это, так как он наслаждался некоторыми, наблюдая Звездный путь). Она возвратилась к его месту несколько минут спустя, видел, что он ясно нервировался и в бедствии, и спросил, было ли что-нибудь, что она могла бы сделать, чтобы помочь. Дэйв, подавленный и не ожидающий ее, чтобы понять что-либо, что он говорил, указал на экран и объяснил его ­затруднительное положение. Она приостановилась для вторых взглядов об этом и затем спросила, "Вы попытались выполнить Монитор Процесса?"

Как эта недостоверная история предполагает, Монитор Процесса (Procmon) является первой утилитой, к которой поворачиваются много людей, диагностируя компьютерные проблемы. Это - также часто последняя утилита, которую они используют, поскольку Procmon часто точно определяет источник их проблем. Большинство "Случая" поиска и устранения неисправностей историй, которые я получаю от пользователей, может быть получено в итоге как, "У нас была таинственная проблема; мы выполняли Procmon; мы нашли причину проблемы."

Проводник процесса, описанный в Главе 3, является большим инструментом для того, чтобы наблюдать процессы относительно системы: сколько ЦП и памяти они используют, какие DLL они загрузили, какие системные объекты они используют, контекст защиты, каждый работает под и т.д. Прокмон показывает Вам другое представление системного действия. Где Procexp - по существу движущийся снимок системы, Procmon - усовершенствованный инструмент журналирования, который получает ­подробную информацию о реестре, файле, процессе/потоке, и сетевом действии. В то время как Procexp может сказать Вам, что у процесса есть открытый дескриптор к определенному файлу, Procmon может сказать Вам, какие низкоуровневые операции процесс выполняет на том файле, когда они произошли, сколько времени они взяли, успешно выполнялись ли они или почему они перестали работать, что полный стек вызова (след кода, приводящего к работе), и больше.

 

Поскольку миллионы операций могут произойти в короткий срок, Procmon обеспечивает мощную и гибкую фильтрацию и выделение возможностей так, чтобы можно было найти мероприятия для Вас быстро. Procmon может быть задан сценарием от пакетных файлов с ­параметрами командной строки­, и ее данные могут быть сохранены к файлу, который может быть просмотрен и проанализирован на другой системе в более позднее время. Другими словами не ужасно трудно заставить неопытного пользователя в удаленном расположении получать трассировку Procmon и отправлять это Вам так, чтобы можно было решить его или её проблему.

Procmon был сначала выпущен в 2006 и заменяет Filemon и Regmon, два из исходных инструментов Sysinternals. Филемон полученная информация о действии файловой системы; Regmon сделал то же самое для реестра. Были ограничены оба инструмента, перенесенные от уменьшающейся производительности когда они собрали больше данных, и их возможности фильтрации. Кроме того, фильтр в действительности во время сбора данных вызванные фильтруемые данные, которые никогда не будут получены; фильтр, которому применяются к собранные данные, постоянно удаленные те записи. Procmon был записан с нуля и обеспечивает объединенное представление всего файла, реестра, и действия процесса/потока (и больше), получая гораздо больше детали и масштабируясь намного лучше, чем Filemon и Regmon сделали с намного более низким воздействием производительности. Procmon также предлагает время загрузки, регистрируя, неразрушающую фильтрацию, формат файла системного журнала, который сохраняет все полученные данные, API для того, чтобы ввести вывод отладки в получение, и намного больше. Если Вы все еще используете Filemon и Regmon из привычки, остановитесь! Filemon и Regmon оставались на сайте Sysinternals поддерживать унаследованные системы, которые не встречали минимальные требования для Procmon, но поскольку те версии Windows долго испытывали недостаток поддержки, Filemon и Regmon были удалены и больше не доступны.

Procmon работает на x86 и x64 версиях Windows XP и более новый, и Windows Server 2003 и более новый.

Начинание с Procmon.

Поскольку это загружает драйвер ядра, Procmon требует административных прав получить события, включая Загрузку и Разгрузить полномочие Драйверов устройства. На Windows Vista и более новом, Windows автоматически запрашивает Управление Учетной записью пользователя (UAC) повышение, если Вы запускаете Procmon с неподнятого процесса, такого как Проводник. На Windows XP или Windows Server 2003, Вы должны быть зарегистрированы как администратор или использование RunAs с учетной записью администратора. См. "Административные Права" раздел в Главе 2, "Windows Core Concepts," для получения дополнительной информации.

Примечание. Procmon не требует административных прав открыть существующий файл системного журнала с/OpenLog параметром командной строки.

 

Самый легкий способ начать с Procmon состоит в том, чтобы только выполнить это. Окно Монитора Процесса, показанное в рисунке 4-1, появится и сразу начнет заполняться данными. Каждая строка в таблице представляет одно низкоуровневое событие, которое произошло на Вашей системе. Хотя можно настроить, какие столбцы появляются в таблице и в том, какой порядок, набор столбца по умолчанию включает время суток, имя процесса и ID, работа (со значком, идентифицирующим тип работы, такой как файловая система, реестр, и т.д), путь объекта, которым управляют на (если применимый), результат работы, и дополнительные детали.

 

Рис. 4-1. Монитор процесса.

Между прочим строка состояния показывает, сколько событий было получено. Это число быстро увеличится, пока Вы не прекратите получать события. Чтобы переключить получение на и прочь, нажмите Ctrl + E или щелкните по значку Capture на панели инструментов.

Чтобы очистить дисплей всех полученных событий, нажмите Ctrl+X или щелкните по значку Clear на панели инструментов.

События добавляются до конца списка, как они происходят. Функция Автопрокрутки Прокмона (прочь по умолчанию) прокручивает дисплей, поскольку новые события добавляются так, чтобы новое дополнение было видимо. Чтобы переключить Автопрокрутку на и прочь, нажмите Ctrl+A или щелкните по значку Autoscroll на панели инструментов.

Параметры экрана.

Можно сохранить Procmon видимым, когда он не фокусируется, проверяя Поверх остальных окон в меню опций.

Выберите Шрифт на меню опций, чтобы изменить шрифт, который Прокмон использует в главном окне и в других таблицах, таких как фильтр, и выделите диалоговые окна, вкладку свойств Stack события, и Сводные диалоговые окна Трассировки.

 

Таблица 4-1 описывает типы получений событий Procmon.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: