Ядра, по-видимому, не сбрасываются при использовании sudo
несмотря на то, что для ulimit -c
установлено значение unlimited. Есть ли способ обойти это?
2 ответа
3
sudo сбросит настройки дампа ядра, как это происходит для многих других состояний среды. Вы можете запустить программу через помощника, который сначала включает дамп ядра, а затем запускает программу. Создайте, например, оболочку /usr/local/bin/coredump
и затем chmod +x
:
$ cat /usr/local/bin/coredump
#!/bin/sh
ulimit -c unlimited
exec "$@"
затем
sudo /usr/local/bin/coredump /your/crashing/program
0
Кажется, это можно сделать с помощью опции -s, например:
sudo -s "ulimit -c unlimited; ./segfaultProg"
Однако 2 предостережения:
- Вам может потребоваться установить параметр
suid_dumpable
с помощьюsysctl -w kernel.suid_dumpable=2
- Возможно, вам придется убрать старое ядро с пути. По-видимому, существуют специальные правила, в которых он может отказаться писать ядро, если установлен бит suid, и там уже есть ядро.
Подробности смотрите ниже: