dumper

Дамп аварийного состояния программы (посмертный дамп) (QNX)

Синтаксис:

dumper [-d путь] [-m] [-n] [-p pid] [-s размер[G|M|K]]

[-v] [-w] [-z уровень] &

Поддерживаемые платформы:

Neutrino

Опции:

-d путь

Имя каталога, в который следует записать файлы аварийного дампа. По умолчанию используется основной каталог.

-m

Отменить дамп памяти.

-n

Сохранить последовательные дампы. Каждый дамп сохраняется в файле с именем в следующем формате:

исполняемый_файл.номер.core

где номер начинается с 1 и увеличивается до того момента, пока имя файла не перестает существовать.

-p pid

Немедленно сохранить файл дампа для данного процесса и завершить работу утилиты dumper.

-s размер[G|M|K]

Установить максимальный размер core-файла в байтах.

-v

Вывести расширенную информацию.

-w

Установить права на чтение core-файлов для всех пользователей.

-z уровень

Использовать утилиту gzip для сжатия core-файлов. Уровень сжатия должен находиться в диапазоне от 1 (самое быстрое сжатие) до 9 (максимальное сжатие).

Описание:

Утилита dumper работает в фоновом режиме и обеспечивает реализацию службы аварийного дампа для всех процессов. Каждый раз при аварийном завершении работы программы на диск записывается дамп ее текущего состояния. Файлу дампа присваивается имя, совпадающее с именем данной программы, с расширением .core. Например, если именем программы является experiment, дамп записывается в файл experiment.core в основном каталоге.

Примечание. В системе QNX Momentics запуск утилиты dumper производится с помощью команды dumper -d /var/dumps.

Для принудительного сохранения всех дампов в каталоге, отличающемся от каталога /var/dumps, можно использовать опцию -d.

Примечание. Размер файлов дампа может быть большим, поэтому следует обеспечить наличие достаточного дискового пространства в целевой файловой системе.

Опция -p обеспечивает возможность мгновенного получения дампа для отдельного процесса. Если указана опция -p, утилита dumper не работает в фоновом режиме, происходит незамедлительное завершение ее работы.

Для анализа файла дампа можно применять отладчик, например, gdb:

gdb исполняемый_файл core-файл

Пример.

gdb /usr/photon/bin/pterm /var/dumps/pterm.core

Возможны два варианта завершения работы программы: оно может выполняться в штатном режиме собственными средствами программы с возвращением статуса завершения или принудительно при получении сигнала, обработка которого не предусмотрена. В последнем случае утилита dumper записывает файл дампа для следующих сигналов:

Сигнал

Описание

SIGABRT

Вызываемая программой функция прерывания.

SIGBUS

Ошибка четности.

SIGEMT

Команда EMT.

SIGFPE

Ошибка с плавающей запятой или деление на нуль.

SIGILL

Выполнение запрещенной команды.

SIGQUIT

Выход (Quit)

SIGSEGV

Нарушение сегментации.

SIGSYS

Неверный аргумент для системного вызова.

SIGTRAP

Трассировочное прерывание (не сбрасывается при перехвате).

SIGXCPU

Превышение предела ЦП.

SIGXFSZ

Превышение предельного размера файла.


Предусмотрена возможность принудительного выполнения дампа работающей программы с помощью установки одного из вышеупомянутых сигналов, если программа не выполняет маскирование или обработку данного сигнала непосредственно. Например, для выполнения дампа с помощью команды kill с указанием идентификатора процесса (pid):

kill -SIGABRT pid

Для выполнения дампа с помощью утилиты slay с указанием имени процесса:

slay -s SIGABRT имя_процесса


Примеры:

Запуск утилиты dumper в случае записи файлов дампа в каталог по умолчанию:

dumper &

Запуск утилиты dumper в случае сохранения файлов дампа в каталог /home/dumps:

dumper -d /home/dumps &

Файлы:

/proc/dumper


Специальная запись в файловой системе /proc (см. procnto*), в которую записывается уведомление при аварийном завершении процесса.

Статус завершения:

Обычно утилита dumper работает постоянно. Однако ее работа может быть завершена при возникновении ошибки во время запуска (например, если ее запуск не производился пользователем с учетной записью root) или при получении сигнала.

0

Получен сигнал, завершение работы утилиты dumper выполнено успешно.

1

Во время запуска произошла ошибка (выполнение утилиты не производилось пользователем с учетной записью root или производилось с указанием неверных опций в командной строке).