
Linux-версия утилиты ProcDump Sysinternals
ProcDump — это переосмысление для Linux и Mac классического инструмента ProcDump из набора утилит Sysinternals для Windows. ProcDump предоставляет удобный способ для разработчиков Linux и Mac создавать дампы ядра своих приложений на основе триггеров производительности. ProcDump для Linux и Mac является частью Sysinternals.

gdb >= 7.6.1Инструкции по установке см. здесь.
Инструкции по сборке см. здесь.
КРИТИЧЕСКОЕ ИЗМЕНЕНИЕ С выпуском ProcDump 1.3 ключи теперь согласованы с версией ProcDump для Windows. Обратите внимание, что версия для Mac в настоящее время имеет ограниченный набор триггеров.
Capture Usage:
procdump [-n Count]
[-s Seconds]
[-c|-cl CPU_Usage]
[-m|-ml Commit_Usage1[,Commit_Usage2...]]
[-gcm [<GCGeneration>: | LOH: | POH:]Memory_Usage1[,Memory_Usage2...]]
[-gcgen Generation]
[-restrack [nodump]]
[-sr Sample_Rate]
[-tc Thread_Threshold]
[-fc FileDescriptor_Threshold]
[-sig Signal_Number1[,Signal_Number2...]]
[-e]
[-f Include_Filter,...]
[-fx Exclude_Filter]
[-mc Custom_Dump_Mask]
[-pf Polling_Frequency]
[-o]
[-log syslog|stdout]
{
{{[-w] Process_Name | [-pgid] PID} [Dump_File | Dump_Folder]}
}
Options:
-n Количество дампов для записи перед выходом.
-s Последовательные секунды перед записью дампа (по умолчанию 10).
-c Порог использования CPU, выше которого создавать дамп процесса.
-cl Порог использования CPU, ниже которого создавать дамп процесса.
-m Порог(и) использования памяти (МБ), выше которого создавать дампы.
-ml Порог(и) использования памяти (МБ), ниже которого создавать дампы.
-gcm [.NET] Порог(и) использования памяти GC (МБ), выше которого создавать дампы для указанного поколения или кучи (по умолчанию общее использование .NET памяти).
-gcgen [.NET] Создавать дамп при начале и завершении сборки мусора указанного поколения.
-restrack Включить отслеживание утечек памяти (семейство API malloc). Если используется без других триггеров, используйте 't' для ручного захвата отчета restrack. При использовании с другими триггерами опция 'nodump' может быть использована для предотвращения генерации дампа и создания только отчетов restrack.
-sr Частота выборки при использовании -restrack.
-tc Порог количества потоков, выше которого создавать дамп процесса.
-fc Порог количества файловых дескрипторов, выше которого создавать дамп процесса.
-sig Разделенный запятыми список номеров сигналов, при которых любой сигнал приводит к дампу процесса.
-e [.NET] Создавать дамп, когда процесс сталкивается с исключением.
-f Фильтр (включение) по содержимому .NET исключений (разделено запятыми). Поддерживаются подстановочные знаки (*).
-fx Фильтр (исключение) по содержимому стеков вызовов -restrack. Поддерживаются подстановочные знаки (*).
-mc Пользовательская маска дампа ядра (в hex), указывающая, какая память должна быть включена в дамп ядра. См. 'man core' (/proc/[pid]/coredump_filter) для доступных опций.
-pf Частота опроса.
-o Перезаписать существующий файл дампа.
-log Записывает расширенную трассировку ProcDump в указанный выходной поток (syslog или stdout).
-w Ожидать запуска указанного процесса, если он не запущен.
-pgid Указанный ID процесса относится к ID группы процессов.
Ключ -restrack активирует отслеживание ресурсов, позволяя мониторить и сообщать о любых выделениях ресурсов, которые не были освобождены на момент создания дампа ядра. Результаты сохраняются в файл с расширением '.restrack'. В настоящее время отслеживаются следующие функции выделения/освобождения ресурсов:
Выделение:
Освобождение:
Версия для Mac в настоящее время не реализует отслеживание ресурсов.
Следующие примеры нацелены на процесс с pid == 1234
Следующая команда создаст дамп ядра немедленно.
sudo procdump 1234
Следующая команда создаст 3 дампа ядра с интервалом в 10 секунд.
sudo procdump -n 3 1234
Следующая команда создаст 3 дампа ядра с интервалом в 5 секунд.
sudo procdump -n 3 -s 5 1234
Следующая команда будет создавать дамп ядра каждый раз, когда использование CPU процесса >= 65%, до 3 раз, с интервалом не менее 10 секунд между дампами.
sudo procdump -c 65 -n 3 1234
Следующая команда будет создавать дамп ядра каждый раз, когда использование CPU процесса >= 65%, до 3 раз, с интервалом не менее 5 секунд между дампами.
sudo procdump -c 65 -n 3 -s 5 1234
Следующая команда создаст дамп ядра, когда использование CPU выходит за пределы диапазона [10, 65].
sudo procdump -cl 10 -c 65 1234
Следующая команда создаст дамп ядра, когда использование CPU >= 65% или использование памяти >= 100 МБ.
sudo procdump -c 65 -m 100 1234
Следующая команда создаст дамп ядра, когда использование памяти >= 100 МБ, а затем еще один дамп, когда использование памяти >= 200 МБ.
sudo procdump -m 100,200 1234
Следующая команда создаст отчет об утечке памяти (без дампов) каждый раз, когда пользователь нажимает 't':
sudo procdump -restrack 1234
Следующая команда создаст 3 отчета об утечке памяти (без дампов) с интервалом в 5 секунд:
sudo procdump -n 3 -s 5 -restrack nodump 1234
Следующая команда создаст дамп ядра и отчет об утечке памяти, когда использование памяти >= 100 МБ.
sudo procdump -m 100 -restrack 1234
Следующая команда создаст отчет об утечке памяти (без дампов), когда использование памяти >= 100 МБ.
sudo procdump -m 100 -restrack nodump 1234
Следующая команда создаст дамп ядра и отчет об утечке памяти, когда использование памяти >= 100 МБ, выполняя выборку каждого 10-го выделения памяти.
sudo procdump -m 100 -restrack -sr 10 1234
Следующая команда создаст дамп ядра и отчет об утечке памяти, когда использование памяти >= 100 МБ, исключая все стеки вызовов, содержащие фреймы со строкой "cache":
sudo procdump -m 100 -restrack -fx *cache* 1234
Следующая команда создаст дамп ядра, когда общее использование .NET памяти >= 100 МБ, а затем еще один дамп, когда использование памяти >= 200 МБ.
sudo procdump -gcm 100,200 1234
Следующая команда создаст дамп ядра, когда использование .NET памяти для поколения 1 >= 1 МБ, а затем еще один дамп, когда использование памяти >= 2 МБ.
sudo procdump -gcm 1:1,2 1234
Следующая команда создаст дамп ядра, когда использование памяти кучи больших объектов .NET >= 100 МБ, а затем еще один дамп, когда использование памяти >= 200 МБ.
sudo procdump -gcm LOH:100,200 1234
Следующая команда создаст дамп ядра в начале и в конце сборки мусора поколения 1 .NET.
sudo procdump -gcgen 1
Следующая команда создаст дамп ядра в каталоге /tmp немедленно.
sudo procdump 1234 /tmp
Следующая команда создаст дамп ядра в текущем каталоге с именем dump_0.1234. Если используется -n, файлы будут называться dump_0.1234, dump_1.1234 и так далее.
sudo procdump 1234 dump
Следующая команда создаст дамп ядра при возникновении SIGSEGV.
sudo procdump -sig 11 1234
Следующая команда создаст дамп ядра при возникновении SIGSEGV, где дамп ядра будет содержать только анонимные закрытые отображения.
sudo procdump -mc 1 -sig 11 1234
Следующая команда создаст дамп ядра, когда целевое .NET приложение генерирует исключение System.InvalidOperationException.
sudo procdump -e -f System.InvalidOperationException 1234
Фильтр включения поддерживает частичное совпадение и подстановочные знаки, поэтому следующая команда также создаст дамп ядра для System.InvalidOperationException:
sudo procdump -e -f InvalidOperation 1234
или
sudo procdump -e -f "*Invali*Operation*" 1234
Все опции также можно использовать с
-w, чтобы ожидать любой процесс с заданным именем.
Следующая команда ожидает процесс с именем my_application и создает дамп ядра немедленно, когда он найден.
sudo procdump -w my_application
Если вы заинтересованы в исправлении ошибок и внесении прямого вклада в код, пожалуйста, ознакомьтесь с документом "Как внести вклад", который охватывает следующее:
Пожалуйста, также ознакомьтесь с нашим Кодексом поведения.
© Microsoft Corporation. Все права защищены.
Лицензировано под лицензией MIT.
ProcDump для Linux: