[linux] регистрирование segmentation fault-ов

Landstreicher

Хочу сделать так, чтобы при каждом падении какого-либо процесса с SIGSEGV в журнале (например, в /var/log/messages) отмечался pid процесса, имя исполнимого файла, текущий instruction pointer, время, аргументы запуска (или другая информация, чтобы потом воспроизвести баг). Еще неплохо было бы генерить core-файлы, чтобы они включали в себя уникальный идентификатор (хотя бы pid). Видел что-то похожее в каких-то *BSD системах (не уверен, давно было).
Как такое настроить? ОС — Linux 2.6.23 на x86.

Olenenok

Для генерации корок просто выполни ulimit -c unlimited

Chupa

/proc/sys/debug/exception-trace

Marinavo_0507

/proc/sys/kernel/core_*
и для лога тоже кажестся есть фича в новых ядрах, а для x86-64 - даже в неновых
ещё какой-нибудь pacct может быть поможет или аудит

sergey_m

Ха-ха, как линукс дампит коры меня всегда смешило, а даже отметил это в своём hatelist. :lol:
, напиши патч, чтобы можно было нормально задать имя кор:
The name of the file is controlled via the sysctl(8) variable
kern.corefile. The contents of this variable describes a filename to
store the core image to. This filename can be absolute, or relative
(which will resolve to the current working directory of the program gen-
erating it). Any sequence of %N in this filename template will be
replaced by the process name, %P by the processes PID, and %U by the UID.
The name defaults to %N.core, yielding the traditional FreeBSD behaviour.
Тут же дел на 15 минут, из них 13 на то, чтобы найти нужное место в исходниках ядра. А если ты в них уже ориентируешься, то найдёшь сразу.
И может быть тебе удастся протолкнуть этот патч в основной git (или чё там за vcs?) ;)

Marinavo_0507

давно уже сделали
ты читай посты-то, а не только пиши

Landstreicher

Спасибо всем ответившим!
Настроил — все работает, именно так, как мне надо! Отлично :)
Оставить комментарий
Имя или ник:
Комментарий: