У меня есть несколько сценариев инициализации, которые запускают некоторые демоны, которые я написал. Я хочу, чтобы Linux генерировал coredump каждый раз, когда происходит сбой. Я активировал coredumps в /etc/security/limits.conf, добавив следующую строку:
* hard core 100000
После перезагрузки я запускаю ulimit -a и вижу, что coredumps не активированы:
> root@computer:~# ulimit -a
> core file size (blocks, -c) 0
Во-первых, я проверил, есть ли в моей системе какой-либо файловый скрипт, который деактивирует coredumps (greping ulimit -c 0
), но пока ничего не нашел.
Затем я создал фиктивную программу c ... чтобы дважды проверить, работает ли она, и я могу подтвердить, что это не так. Программа такая
int main() {
int *p;
return *p;
}
После запуска coredump не генерируется
root@computer:~# ./a.out
Segmentation fault
Я знаю, что coredump работает (и активируется в ядре), потому что после запуска ulimit -c 100000
и повторения теста выше генерируется coredump.
root@computer:~# ulimit -c 100000
root@computer:~# ./a.out
Segmentation fault (core dumped)
root@computer:~# ls
a.out core
У меня действительно нет идей. Любая помощь?
Спасибо в плюсе !!