Как заменить обработчик по умолчанию на определенный пользователем обработчик в ядре Linux, который обрабатывает исключения, генерирующие дамп ядра? - PullRequest
0 голосов
/ 26 апреля 2011

Я работаю над созданием регистратора данных Postmortem на платформе Linux.Я также опубликовал вопрос относительно этого проекта.Там я получил механизм потока вызовов для создания файла дампа ядра в версии RHEL: 2.6.18.128-el5.

Это выглядит так:

File                                       Function called
1.source/ arch/i386/kernel/signal.c -----> do_signal( )
2.source/kernel/signal.c       ----------> get_signal_to_deliver( )
3.source/fs/exec.c          -------------> do_coredump( )
4.source/fs/binfmt_elf.c    -------------> elf_core_dump( )

Теперь, согласно требованиям проекта, яМне нужно изменить определения обработчика сигналов по умолчанию с помощью моего собственного определяемого пользователем обработчика сигналов, который обрабатывает различные исключения (SIGSEGV, SIGFPE, SIGABRT и т. д.), вызывающие coredump.Кроме того, мне нужно собрать ядро ​​для хранения изменений в ядре с помощью моего обработчика, заменяющего обработчик по умолчанию.

Кто-нибудь может поделиться информацией о ходе выполнения этих операций?

Заранее спасибо всем ответчикам:)

Спасибо VLC

1 Ответ

1 голос
/ 26 апреля 2011

SIGFPE, SIGABRT, SIGSEGV и некоторые другие уже генерируют дамп ядра по умолчанию, см. signal (7) .Тем не менее, во многих дистрибутивах ограничение ресурса размера файла ядра равно 0, что отключает генерацию дампа памяти.Вы можете включить его следующим образом:

ulimit -c unlimited

Вместо unlimited вы можете передать максимальное количество блоков файловой системы, которые должны занимать дамп ядра.

...