Прочитать на английском

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


ProcDump версии 11.0

Марк Руссинович и Эндрю Ричардс

Опубликовано: 11.03.2022

ЗагрузкаСкачать ProcDump (714 КБ)

Скачать ProcDump для Linux (GitHub)
Скачать ProcDump для Mac (GitHub)

Создание с помощью ZoomIt

Введение

ProcDump — это программа командной строки, основная цель которой — мониторинг приложения для пиков ЦП и создание аварийных дампов во время пиков, которые администратор или разработчик могут использовать для определения причины всплеска. ProcDump также включает в себя мониторинг зависания окон (используя то же определение окна, которое использует Windows и Диспетчер задач), необработанное мониторинг исключений и может создавать дампы на основе значений счетчиков производительности системы. Она также может служить общей программой дампа процессов, которую можно внедрить в другие скрипты.

Использование ProcDump

Использование записи:

procdump.exe [-mm] [-ma] [-mt] [-mp] [-mc <Mask>] [-md <Callback_DLL>] [-mk]
            [-n <Count>]
            [-s <Seconds>]
            [-c|-cl <CPU_Usage> [-u]]
            [-m|-ml <Commit_Usage>]
            [-p|-pl <Counter> <Threshold>]
            [-h]
            [-e [1] [-g] [-b] [-ld] [-ud] [-ct] [-et]]
            [-l]
            [-t]
            [-f  <Include_Filter>, ...]
            [-fx <Exclude_Filter>, ...]
            [-dc <Comment>]
            [-o]
            [-r [1..5] [-a]]
            [-at <Timeout>]
            [-wer]
            [-64]
            {
                {{[-w] <Process_Name> | <Service_Name> | <PID>} [<Dump_File> | <Dump_Folder>]}
            |
                {-x <Dump_Folder> <Image_File> [Argument, ...]}
            }

Установка использования:

procdump.exe -i [Dump_Folder]
            [-mm] [-ma] [-mt] [-mp] [-mc <Mask>] [-md <Callback_DLL>] [-mk]
            [-r]
            [-at <Timeout>]
            [-k]
            [-wer]

Удаление использования:

procdump.exe -u

Типы дампов:

Тип дампа Description
-миллиметр Напишите файл дампа Mini. (по умолчанию)
— включает непосредственно и косвенно ссылаемую память (стеки и ссылки на них).
— включает все метаданные (процесс, поток, модуль, дескриптор, адресное пространство и т. д.).
-мама Напишите файл дампа Full.
— включает всю память (изображение, сопоставленное и закрытое).
— включает все метаданные (процесс, поток, модуль, дескриптор, адресное пространство и т. д.).
-мт Напишите файл дампа Triage.
— включает непосредственно ссылаемую память (стеки).
— включает ограниченные метаданные (процесс, поток, модуль и дескриптор).
— попытка удаления конфиденциальной информации, но не гарантируется.
-нардеп Напишите файл дампа MiniPlus.
— включает всю частную память и все изображения чтения и записи или сопоставленную память.
— включает все метаданные (процесс, поток, модуль, дескриптор, адресное пространство и т. д.).
— Чтобы свести к минимуму размер, самая большая область частной памяти превышает 512 МБ.
  Область памяти определяется как сумма одноразмерных выделений памяти.
  Дамп так же подробно, как полный дамп, но размер составляет 10%-75%.
— Примечание. Процессы CLR сбрасываются как full (-ma) из-за ограничений отладки.
-МГц Напишите файл дампа Custom.
— включает память и метаданные, определенные указанной MINIDUMP_TYPE маской (шестнадцатеричной).
-md Напишите файл дампа обратного вызова.
— включает память, определенную MiniDumpWriteDump подпрограммой обратного вызова с именем MiniDumpCallbackRoutine указанной библиотеки DLL.
— включает все метаданные (процесс, поток, модуль, дескриптор, адресное пространство и т. д.).
-mk Также напишите файл дампа ядра.
— включает стеки ядра потоков в процессе.
— ОС не поддерживает дамп ядра (-mk) при использовании клона (-r).
— При использовании нескольких размеров дампа ядро принимается для каждого размера дампа.

Условия.

Условие Description
-a Избегайте сбоя. Требует использования -r. Если триггер приведет к приостановке целевого объекта в течение длительного времени из-за превышенного ограничения параллельного дампа, триггер будет пропущен.
Избегайте сбоя во время ожидания. Отмена коллекции триггера в N секундах.
-b Обрабатывать точки останова отладки как исключения (в противном случае игнорируйте их).
-c Пороговое значение ЦП, указанное для создания дампа процесса.
-cl Пороговое значение ЦП, ниже которого создается дамп процесса.
-постоянный ток Добавьте указанную строку в созданный комментарий дампа.
-e Создание дампа при возникновении необработанного исключения.
1 Включите дамп для создания дампа при первом случайном исключении.
Добавьте -ld для создания дампа при загрузке библиотеки DLL (модуля) (применяется фильтрация).
Добавьте -ud для создания дампа при выгрузке библиотеки DLL (модуля) (применяется фильтрация).
Добавьте -ct для создания дампа при создании потока.
Добавьте -et для создания дампа при выходе потока.
-f Фильтр (включая) содержимое исключений, ведение журнала отладки и имя файла при загрузке и выгрузке DLL. Поддерживаются подстановочные знаки (*).
-fx Фильтр (исключить) содержимое исключений, ведение журнала отладки и имя файла при загрузке или выгрузке DLL. Поддерживаются подстановочные знаки (*).
-g Запуск в качестве собственного отладчика в управляемом процессе (без взаимодействия).
-h Запись дампа, если процесс имеет зависаное окно (не отвечает на сообщения окна по крайней мере 5 секунд).
-k Убьет процесс после клонирования (-r) или в конце коллекции дампа.
-l Отображение журнала отладки процесса.
-m Пороговое значение фиксации памяти в МБ, в котором создается дамп.
-мл Триггер при удалении фиксации памяти ниже указанного значения МБ.
-n Количество дампов для записи перед выходом.
-o Перезапись существующего файла дампа.
-p Триггер, когда счетчик производительности находится в заданном пороге или превышает его. Некоторые счетчики и (или) имена экземпляров могут быть чувствительны к регистру.
-pl Триггер, когда счетчик производительности подпадает ниже указанного порогового значения.
-r Дампа с помощью клона. Параллельное ограничение является необязательным (по умолчанию — 1, максимум 5). ОС не поддерживает дамп ядра (-mk) при использовании клона (-r). ВНИМАНИЕ: высокое значение параллелизма может повлиять на производительность системы.
— Windows 7: использует отражение. ОС не поддерживается -e.
— Windows 8.0: использует отражение. ОС не поддерживается -e.
— Windows 8.1+: использует PSS. Поддерживаются все типы триггеров.
-s Последовательные секунды перед записью дампа (по умолчанию — 10).
-t Создание дампа при завершении процесса.
-u Обрабатывать использование ЦП относительно одного ядра (используемого с -c).
-v ТОЛЬКО ОТЛАДКА: подробные выходные данные.
-w Дождитесь запуска указанного процесса, если он не запущен.
-wer Очередь для отчеты об ошибках Windows дампа (крупнейшего) дампа.
-x Запустите указанный образ с необязательными аргументами. Если это приложение или пакет Store, ProcDump начнется со следующей активации (только).
-y HIDDEN: Активация приложения Store.
-64 По умолчанию ProcDump захватывает 32-разрядный дамп 32-разрядного процесса при запуске на 64-разрядной платформе Windows. Этот параметр переопределяет создание 64-разрядного дампа. Используется только для отладки подсистемы WOW64.

Лицензионное соглашение:

Используйте параметр командной -accepteula строки для автоматического принятия лицензионного соглашения Sysinternals.

Автоматическое завершение:

-cancel <Target Process PID>

Использование этого параметра или настройка события с именем ProcDump-<PID> совпадает с вводом клавиш CTRL+C для корректного завершения ProcDump. Корректное завершение гарантирует возобновление процесса, если запись активна. Отмена применяется ко всем экземплярам ProcDump, отслеживая этот процесс.

Имя файла.

Имя файла дампа по умолчанию: PROCESSNAME_YYMMDD_HHMMSS.dmp

Поддерживаются следующие замены:

Замена Описание
PROCESSNAME Имя процесса
ИД процесса Идентификатор процесса
EXCEPTIONCODE Код исключения
ГГММДД Год/месяц/день
HHMMSS Час/минута/секунда

Примеры

  • Напишите мини-дамп процесса с именем Блокнот (только одно совпадение может существовать):

    C:\>procdump notepad
    
  • Напишите полный дамп процесса с piD "4572":

    C:\>procdump -ma 4572
    
  • Сначала напишите мини-файл, а затем полный дамп процесса с PID '4572':

    C:\>procdump -mm -ma 4572
    
  • Напишите 3 мини-дампы в 5 секундах от процесса с именем Блокнот:

    C:\>procdump -n 3 -s 5 notepad
    
  • Записывайте до 3 мини-дампов процесса с именем "потреблять", когда оно превышает 20 % использования ЦП в течение пяти секунд:

    C:\>procdump -n 3 -s 5 -c 20 consume
    
  • Напишите мини-дампа для процесса с именем "hang.exe", когда одно из его окон не отвечает более чем на 5 секунд:

    C:\>procdump -h hang.exe
    
  • Напишите полный дамп и дамп ядра для процесса с именем "hang.exe", когда одно из его окон не отвечает более чем на 5 секунд:

    C:\>procdump -ma -mk -h hang.exe
    
  • Напишите мини-дамп процесса с именем Outlook, когда общее использование ЦП системы превышает 20 % в течение 10 секунд:

    C:\>procdump outlook -s 10 -p "\Processor(_Total)\% Processor Time" 20
    
  • Напишите полный дамп процесса с именем Outlook, когда число дескрипторов Outlook превышает 10 000:

    C:\>procdump -ma outlook -p "\Process(Outlook)\Handle Count" 10000
    
  • Напишите полный дамп идентификатора PID 1234, экземпляр #87, когда число дескрипторов превышает 10 000:

    C:\>procdump -ma 1234 -p "\Process(svchost#87)\Handle Count" 10000
    

    Примечание. Счетчики нескольких экземпляров
    Если счетчик имеет несколько экземпляров, необходимо включить номер имени и (или) экземпляра.

    \Processor(NNN)\% Processor Time
    \Thermal Zone Information(<name>)\Temperature
    \Process(<name>[#NNN])\<counter>
    

    Для счетчиков требуется добавить идентификатор PID для \Process счетчиков.

    \Process(<name>[_PID])\<counter>
    

    Совет. Используйте Монитор производительности для просмотра счетчиков (например, конфиденциальности регистра).
    Совет. Для \Process(*) счетчиков на основе используйте PowerShell для сопоставления идентификатора с его #NNNидентификатором.

    Get-Counter -Counter "\Process(*)\ID Process"
    
  • Создание полного дампа для 2-го исключения шанса:

    C:\>procdump -ma -e w3wp.exe
    
  • Создание полного дампа для 1-го или 2-го случайного исключения:

    C:\>procdump -ma -e 1 w3wp.exe
    
  • Запись полного дампа для сообщения строки отладки:

    C:\>procdump -ma -l w3wp.exe
    
  • Записывайте до 10 полных дампов каждого из 1-го или 2-го исключения w3wp.exe:

    C:\>procdump -ma -n 10 -e 1 w3wp.exe
    
  • Записывайте до 10 полных дампов, если код/имя/msg исключения содержит "NotFound:

    C:\>procdump -ma -n 10 -e 1 -f NotFound w3wp.exe
    
  • Записывайте до 10 полных дампов, если сообщение строки отладки содержит "NotFound":

    C:\>procdump -ma -n 10 -l -f NotFound w3wp.exe
    
  • Подождите, пока процесс называется блокнот (и отслеживайте его для исключений):

    C:\>procdump -e -w notepad
    
  • Запустите процесс с именем Блокнот (и отслеживайте его для исключений):

    C:\>procdump -e -x c:\dumps notepad
    
  • Зарегистрируйтесь для запуска и попытайтесь активировать хранилище "приложение". Новый экземпляр ProcDump запускается при активации:

    C:\>procdump -e -x c:\dumps Microsoft.BingMaps_8wekyb3d8bbwe!AppexMaps
    
  • Зарегистрируйтесь для запуска магазина "package". Новый экземпляр ProcDump запускается при активации (вручную):

    C:\>procdump -e -x c:\dumps Microsoft.BingMaps_1.2.0.136_x64__8wekyb3d8bbwe
    
  • Напишите дамп MiniPlus в Microsoft Exchange Information Store, если он имеет необработанное исключение:

    C:\>procdump -mp -e store.exe
    
  • Отображение без записи дампа, коды исключений и имена w3wp.exe:

    C:\>procdump -e 1 -f "" w3wp.exe
    
  • Windows 7/8.0; Используйте отражение для уменьшения простоя для 5 последовательных триггеров:

    C:\>procdump -r -ma -n 5 -s 15 wmplayer.exe
    
  • Windows 8.1+; Используйте PSS для уменьшения простоя для 5 одновременных триггеров:

    C:\>procdump -r 5 -ma -n 5 -s 15 wmplayer.exe
    
  • Установите ProcDump в качестве отладчика postmortem (AeDebug):

    C:\>procdump -ma -i c:\dumps
    

    .. или..

    C:\Dumps>procdump -ma -i
    
  • Удалите ProcDump в качестве отладчика postmortem (AeDebug):

    C:\>procdump -u
    

См. список примеров командных строк (примеры приведены выше):

C:\>procdump -? -e
  • Windows Internals Book The official updates and errata page for the definitive book on Windows internals, by Mark Russinovich and David Solomon.
  • Справка администратора Windows Sysinternals— официальное руководство по служебным программам Sysinternals Марком Руссиновичем и Аароном Маргозом, включая описания всех инструментов, их функции, способы их использования для устранения неполадок и примеры реальных вариантов их использования.

ЗагрузкаСкачать ProcDump (714 КБ)

Скачать ProcDump для Linux (GitHub)
Скачать ProcDump для Mac (GitHub)

Выполняется:

  • Клиент: Windows 8.1 и более поздние версии.
  • Сервер: Windows Server 2012 и выше.

Подробнее