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

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

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

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

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

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