dumper

Служба создания дампов (core-файлов) аварийного состояния приложений

Синтаксис:

dumper [-d путь] [-m] [-n] [-p pid] [-s размер[G|M|K]] [-v] [-w] [-z уровень] &

Опции:

-d путь
Имя каталога для сохранения дампов программ. По умолчанию используется домашний каталог пользователя, от имени которого запущена программа.
-m
Не выполнять дамп памяти.
-n
Сохранять дампы последовательно. При создании нового дампа (например, для приложения исполняемый_файл) предыдущий дамп исполняемый_файл.core автоматически переименовывается в исполняемый_файл.номер.core, где номер - первый свободный номер, начиная с 1 (т.е. дамп с таким порядковым номером в каталоге сохранения отсутствует).
-p pid
Немедленно сохранить дамп для данного процесса и завершить работу утилиты .
-s размер[G|M|K]
Установить максимальный размер дампа в байтах.
-v
Вывести расширенную информацию.
-w
Установить права на чтение дампов для всех пользователей.
-z уровень
Использовать утилиту gzip для сжатия дампов. Уровень сжатия должен находиться в диапазоне от 1 (самое быстрое сжатие) до 9 (максимальное сжатие).

Платформы:

ЗОСРВ «Нейтрино»

Целевые архитектуры:

arm, armv7, e2k, mips, ppc, x86

Описание:

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


Note: Размер дампов может достигать нескольких десятков или сотен мегабайт (обычно зависит от количества подключаемых библиотек), поэтому следует обеспечить наличие достаточного дискового пространства в целевой файловой системе.

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

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

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

Пример (дамп pterm.core скопирован с целевой машины в каталог /tmp инструментальной машины):

ntox86-gdb ${KPDA_TARGET}/x86/usr/photon/bin/pterm /tmp/pterm.core

Также для предварительного анализа файла дампа непосредственно на целевой машине можно использовать утилиту coreinfo.

Возможны два варианта завершения работы программы: оно может выполняться в штатном режиме собственными средствами программы с возвращением статуса завершения или принудительно при получении сигнала, обработка которого не предусмотрена. В последнем случае утилита 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-*), в которую записывается уведомление при аварийном завершении процесса.

Возвращаемое значение:

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

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

Классификация:

Базовые подсистемы ЗОСРВ «Нейтрино»

Тематические ссылки:

coreinfo, gdb, kill, slay




Предыдущий раздел: Сервисы