Создать дамп ядра при запуске программы с помощью sudo?
2521
Catskul
Ядра, по-видимому, не сбрасываются при использовании, sudoнесмотря на ulimit -cто, что они установлены на неограниченное количество Есть ли способ обойти это?
2 ответа на вопрос
3
Ambroz Bizjak
sudo сбросит настройки дампа ядра, как это происходит для многих других состояний среды. Вы можете запустить программу через помощника, который сначала включает дамп ядра, а затем запускает программу. Создайте, например, обертку, /usr/local/bin/coredumpа затем chmod +x:
Я обнаружил, что даже если для ulimit -c установлено значение unlimited, sudo su для root по-прежнему не будет генерировать ядро.
Catskul 12 лет назад
0
Да, я уже упоминал, что sudo будет сбрасывать настройки дампа ядра. Вы должны сделать "ulimit -c безлимитный" после sudo.
Ambroz Bizjak 12 лет назад
0
Это то, что я говорил. Повторив рут с помощью `sudo su`, затем установив ограничение ядра на` unlimited`, ядро все равно не получится. Это больше не проблема после работы с sysctl, но, несмотря на то, что поведение suid_dumpable хорошо документировано, по некоторым причинам оно кажется не таким последовательным на практике.
Catskul 12 лет назад
0
0
Catskul
Кажется, это можно сделать с помощью опции -s, например:
sudo -s "ulimit -c unlimited; ./segfaultProg"
Однако 2 предостережения:
Вам может понадобиться установить suid_dumpableпараметр сsysctl -w kernel.suid_dumpable=2
Возможно, вам придется убрать старое ядро с пути. По-видимому, существуют специальные правила, в которых он может отказаться писать ядро, если установлен бит suid, и там уже есть ядро.