Подтвердить что ты не робот

Изменение местоположения дампа сердечника

Я хочу изменить местоположение файлов дампа по умолчанию, чтобы каждый раз, когда дамп ядра был сгенерирован, он переходит в этот каталог. Кроме того, возможно ли сохранить файл дампа по имени разбитого файла в этом месте

4b9b3361

Ответ 1

Да, это. Вы можете изменить /proc/sys/kernel/core_pattern чтобы определить путь, используемый для генерации /proc/sys/kernel/core_pattern. Для получения дополнительной информации см. man core

пример:

echo '/tmp/core_%e.%p' | sudo tee /proc/sys/kernel/core_pattern    # 'tee' instead of > so that
                                                                   # opening happens in the
                                                                   # elevated process

приведет к тому, что все будущие дампы ядра будут генерироваться в /tmp и называться core_[program].[pid]

Ответ 2

Прежде чем следовать инструкциям принятого ответа, может быть хорошей идеей проверить содержимое /proc/sys/kernel/core_pattern, чтобы увидеть, используется ли система Redhat abrt.

-> cat /proc/sys/kernel/core_pattern
|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e

Если это используется, у вас уже есть довольно обширная схема для управления основными файлами, которые вы хотели бы понять, прежде чем переопределять ее.

Вкратце, abrt:

  • помещает здесь основные файлы: /var/spool/abrt/
  • имеет gui, который запускается с помощью команды abrt-gui
  • добавляет основной файл с дополнительной информацией о неудавшемся процессе.
  • настраивается с помощью этого файла: /etc/abrt/abrt-action-save-package-data.conf

Один общий камень преткновения с его использованием - это изменить эту строку в файле конфигурации:

ProcessUnpackaged = no

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

[EDIT, чтобы ответить, как использовать coredump] Чтобы проверить дамп ядра, я делаю это:

cd /var/spool/abrt/XXXXXXX
gdb $(cat executable) coredump

Там может быть лучший способ, чтобы, но gdb хорошо меня обслужил, поэтому я не искал других способов. Просто замените XXXXXXX на папку, содержащую файл coredump. Команда gdb вырезана и готова к вставке.

Литература:

Редхатская книга

CentOS Forum