Файл: Руссинович М., Маргозис А. Утилиты Sysinternals. Справочник администратора 2012.pdf

ВУЗ: Не указан

Категория: Книга

Дисциплина: Операционные системы

Добавлен: 29.10.2018

Просмотров: 33032

Скачиваний: 742

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Process Monitor 

Глава 4  137 

Рис. 4-29.  Диалоговое окно Stack Summary

На рис. 4-29 показана сводка по стеку для программы, для которой в си-

стеме есть полный набор символов. Два верхних фрейма показывают, что 
библиотечная функция CRT tmainCRTStartup  вызвала стандартную вход-
ную функцию wmain, а вызванные ей функции привели к возникновению 
55117 событий, записанных Procmon с текущим фильтром. Раскрывая наи-
более часто встречающиеся узлы, легко определить, какой код исполняется 
наиболее интенсивно. Свыше 72% событий, отображенных с текущим филь-
тром, сгенерировано вызовами lnternalWorkltem+0x81  и  RegSetValueExW 
(39806 событий).

Если выбрать фрейм стека и щелкнуть кнопку Go To Event, то будет вы-

брано первое событие в трассировке с соответствующим стеком вызовов. 
Кнопка Source активируется при наличии полного набора символов для вы-
бранного элемента. Если доступен файл исходного текста, то щелчок кнопки 
Source выводит соответствующие его строки в окне просмотра.

Как и в других сводных окнах, поля упорядочиваются щелчками заголов-

ков, но крайнее левое поле можно только перетаскивать.

Имейте в виду, что генерации сводки по стеку требует времени, особенно 

если выполняется интерпретация символов.

Сводка по сети

Диалоговое окно Network Summary (рис. 4-30) отображает все конечные 
точки и порты TCP- и UDP-подключений в отфильтрованной трассировке, 
а также число установленных и разорванных соединений, отправленных и 
полученных сообщений, общее число вышеуказанных событий, а также от-
правленных и полученных байтов. По щелчку заголовка столбца таблица 
сортируется по его содержимому, также возможно перетаскивание столбцов 
на новое место. Двойной щелчок строки добавляет к текущему фильтру пра-
вило Path для данной конечной точки и порта. Окно Filter вызывается щел-
ком кнопки Filter и позволяет сохранять содержимое в CSV-файл.

SIN_ch_04.indd   137

27.12.2011   14:16:31


background image

138  Часть 

II   

Работа с утилитами

Рис. 4-30.  Диалоговое окно Network Summary

Сводка по перекрестным ссылкам

Диалоговое окно Cross Reference Summary (рис. 4-31) содержит все ото-
бражаемые текущим фильтром пути к объектам, к которым обращаются 
несколько процессов. Каждая строка содержит путь, а также перечень чи-
тающих и записывающих процессов. Допускается перетаскивание столбцов 
и сохранение данных CSV-файл. Двойной щелчок строки или выделение 
строки с щелчком кнопки Filter On Row (Фильтр по строке) добавляет вы-
бранный путь к фильтру.

Рис. 4-31.  Диалоговое окно Cross Reference Summary

Счетчик событий

Выберите имя столбца в диалоговом окне Count Values Occurrences 
(Значения счетчика событий)
 (рис. 4-32), и щелкните кнопку Count (Под-
считать).
 Procmon отображает все значения выбранного атрибута, а также 
число событий, в которое данное значение входит при использовании теку-
щего фильтра. Допускается перетаскивание столбцов и сохранение данных 
CSV-файл. Двойной щелчок объекта добавляет в фильтр правило по данно-
му полю и значению. 

SIN_ch_04.indd   138

27.12.2011   14:16:31


background image

Process Monitor 

Глава 4  139 

Рис. 4-32.  Диалоговое окно Count Values Occurrences

Включение вывода отладчика 
в трассировки Procmon

Procmon поддерживает API, позволяющим разработчикам создавать собы-
тия вывода отладчика, добавляемые в поток событий с пользовательским 
комментарием. Например, можно включать пользовательский вывод отлад-
чика в трассировку при вызове и завершении функций, чтобы сопоставить 
эти события с активностью файловой системы, реестра и другими событи-
ями. С помощью фильтров Exclude Events Before и Exclude Events After 
для выбранных событий отладки можете легко выделить интересующие вас 
аспекты программы. В отличие от стандартного вывода отладчика Windows, 
который записывается утилитой DebugView (см. главу 7), и других от-
ладчиков, данный API-интерфейс предназначен специально для работы с 
Procmon.

Рис. 4-33.  События вывода отладчика

Эти события генерируются отладчиком и относятся к классу событий 

трассировки, наряду с событиями трассировки процесса и потока. Имейте 

SIN_ch_04.indd   139

27.12.2011   14:16:32


background image

140  Часть 

II   

Работа с утилитами

в виду, что по умолчанию все события трассировки блокируются фильтром. 
Для просмотра событий вывода отладчика установите переключатель Show 
Profiling Events

  (

Показать события трассировки) на панели инструмен-

тов. После этого можно включить подсветку операции вывода отладчика и 
скрыть события трассировки процесса. На рис. 4-33 отображен подсвечен-
ный вывод отладчика, чередующийся с обращениями к реестру.

Все процессы, в том числе, работающие с низким IL, могут использовать 

данную API-функцию, принимающую строки Unicode длиной до 2048 зна-
ков. Вот пример:

#include <stdio.h> #include <windows.h>
const ULONG FILE_DEVICE_PROCMON_LOG = 0x00009535; const ULONG IOCTL_EXTERNAL_LOG_
DEBUGOUT =
(ULONG) CTL_CODE( FILE_DEVICE_PROCMON_LOG, 0x81, METHOD_BUFFERED, FILE_WRITE_ACCESS );
BOOL WriteProcmonDebugOutput(const wchar_t * szDebugOutput) {
if (!szDebugOutput)
return FALSE; HANDLE hDevice = CreateFileW( L»\\\\.\\Global\\ProcmonDebugLogger»,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL ); if ( hDevice == INVALID_HANDLE_VALUE )
return FALSE; DWORD buflen = wcslen(szDebugOutput) * sizeof(wchar_t); DWORD unused = 
0; BOOL ret = DeviceIoControl( hDevice, IOCTL_EXTERNAL_LOG_DEBUGOUT,
(LPVOID)szDebugOutput, buflen, NULL, 0, &unused, NULL ); CloseHandle(hDevice); return 
ret; }

Гуру отладки Джон Роббинс разработал для нее оболочку, которую мож-

но без труда встроить в свои «родные» или управляемые приложения. Ее 
можно скачать по следующей ссылке: http://www.wintellect.com/downloads/
ProcMonDebugOutput.zip.

Панель инструментов

В этом разделе разъясняется назначение кнопок на панели инструментов 
Procmon и также даются ссылки на темы с описанием соответствующих 
функций.

Рис. 4-34.  Панель инструментов Procmon

Значки панели инструментов Procmon, изображенной на рис. 4-34, слева 

направо:
•  Open Log — загрузка сохраненных трассировок Procmon»;
•  Save Log —  сохранение трассировок Procmon;
•  Capture Events — начало работы с Procmon;

SIN_ch_04.indd   140

27.12.2011   14:16:32


background image

Process Monitor 

Глава 4  141 

•  Autoscroll — начало работы с Procmon;
•  Clear Display — начало работы с Procmon;
•  Диалоговое окно Filter — фильтрация и подсветка;
•  Highlight dialog box — фильтрация и подсветка;
•  Include Process From Window

— фильтрация и подсветка;

•  Show Process Tree — дерево процессов;
•  Find — поиск событий;
•  Jump To Object — переход к разделу реестра или файлу;
•  Show/Hide Registry Activity

(переключатель) — фильтрация и подсветка;

•  Show/Hide File System Activity

(переключатель) — фильтрация и под-

светка;

•  Show/Hide Network Activity

(переключатель) — фильтрация и подсветка;

•  Show/Hide Process And Thread Activity

(переключатель)  — фильтра-

ция и подсветка;

•  Show/Hide Profiling Events (переключатель) — отображение событий 

трассировки.

SIN_ch_04.indd   141

27.12.2011   14:16:32