Создание дампов ядра в Linux - PullRequest
4 голосов
/ 25 марта 2009

Дубликат:

создать дамп ядра в linux

Я пытаюсь создать дамп ядра в моем "Fedora Core выпуск 3 (Гейдельберг)".

[root @ testserver test_core_dump] # uname -a

Linux testserver 2.6.12-1.1381_FC3 # 1 пт 21 октября 03:46:55 EDT 2005 i686 athlon i386 GNU / Linux

Я следую за этим , чтобы создать дампы ядра.

Проблема в том, что / proc / sys / kernel / suid_dumpable отсутствует в этой версии. Я также проверил здесь / proc / sys / fs / suid_dumpable, но suid_dumpable нет.

1) Есть ли какое-то решение для этого? 2) Я что-то здесь упускаю?

Ответы [ 3 ]

11 голосов
/ 25 марта 2009

Инструкции, которые вы выполняете, просто превышают пределы O / S, которые могут помешать вам получить дамп ядра.

Генерация дампа памяти является тривиальным процессом, вы отправляете сигнал процессу следующим образом

kill -ABRT pid_of_process

Есть много вещей, которые могут помешать этому произойти, однако вы должны сначала попробовать это и посмотреть, не генерирует ли он дамп ядра в вашем текущем каталоге. Если программа является интерактивной и не перехватывает сигнал выхода, то вы можете вызвать дамп ядра, отправив процесс SIGQUIT, обычно это связано с CTRL - \

Область, с которой у вас возникают проблемы в указанном документе, относится к процессу, который запускает setuid / setguid, если ваш процесс не работает ни в одном из этих режимов, тогда вы можете спокойно проигнорировать этот шаг. (Вы можете узнать, работает ли процесс setuid / setguid, посмотрев права доступа к файлам программы и изучив биты setuid и setguid, это можно сделать, введя команду ls -l и ища s в 4-й позиции (setuid) или 7-я позиция (setgid) (пример setuid ниже)

-r-sr-xr-x 1 root wheel 57616 28 Oct 03:28 /usr/bin/login

Вы пытались создать ядро, не используя шаг, который не работает, и он работал?

Вы должны будете иметь возможность записывать в каталог, в котором выполняется процесс, или в каталог, определенный для дампов ядра, если это не текущий каталог. Запуск от имени пользователя root может решить проблемы с разрешениями.

6 голосов
/ 25 марта 2009

Я не уверен, что понимаю, чего вы хотите. На веб-странице, на которую вы ссылаетесь, говорится о ВКЛЮЧЕНИИ дампов памяти ядра, а не их запуске. Не беспокойтесь об отсутствующем sysctl - в моих системах Linux его тоже нет, и я могу с радостью выгружать все ядра :) Хотите создать дамп ядра для определенного процесса?

Помимо SIGABRT, вы также можете попробовать использовать gcore:

ИМЯ gcore - генерирует файл ядра для запущенного процесса

СИНТАКСИС gcore [-o имя_файла] pid

ОПИСАНИЕ gcore создает файл ядра для процесса, указанного его идентификатором процесса, pid. По умолчанию файл ядра записывается в core.pid в текущем каталоге.

1 голос
/ 25 марта 2009

Это дубликат этого вопроса . принятый ответ и с большинством голосов предлагают следующее:

В Баш:

ulimit -c unlimited

и в tcsh:

limit coredumpsize unlimited

В этом случае в случае сбоя программы дамп ядра будет создан в файле с именем core, в котором была запущена программа.

...