1

Ядра, по-видимому, не сбрасываются при использовании sudo несмотря на то, что для ulimit -c установлено значение unlimited. Есть ли способ обойти это?

2 ответа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 предостережения:

  1. Вам может потребоваться установить параметр suid_dumpable с помощью sysctl -w kernel.suid_dumpable=2
  2. Возможно, вам придется убрать старое ядро с пути. По-видимому, существуют специальные правила, в которых он может отказаться писать ядро, если установлен бит suid, и там уже есть ядро.

Подробности смотрите ниже:

http://www.randombugs.com/linux/core-dumps-linux.html

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .