Как получить дамп ядра Apache?

8

У меня проблемы с моим сервером 10.10 Ubuntu. После выполнения определенных действий мой apache2 перезапускается с ошибкой сегментации. Для устранения этой проблемы я хотел бы создать дамп ядра. Я сделал следующее:

  • добавлено CoreDumpDirectory /tmp/apache-coredumpsв файл конфигурации
  • Запустить ulimit -c unlimited
  • Запустить apt-get install apache2-dbg php5-dbg
  • перезапустил apacheи вызвал ошибку. Журнал утверждает, что в каталоге может быть дамп памяти, однако он пуст.

Я также пытался использовать gdb непосредственно в исполняемом файле apache2, но apache не запустится, если не запущен через apachectlили service apache2 start.

Как я могу получить дамп ядра для отладки моей проблемы ИЛИ как я могу подключиться gdbнапрямую к apache?

Андреас Хартманн
источник
Для первого взгляните здесь: serverfault.com/questions/470407/… для второго здесь: httpd.apache.org/dev/debugging.html#gdb
Elder Geek
К сожалению, это не сработало. Я попытался установить разрешения, как было предложено в первой ссылке, но ядро ​​до сих пор не сброшено. Я уже знал вторую ссылку. На самом деле он не отвечает на мой вопрос определенным образом для Ubuntu (Ubuntu не имеет исполняемого файла httpd, и прямой вызов apache2 не работает по ранее упомянутым причинам).
Андреас Хартманн
Может, вместо этого coredump находится в / tmp?
Старейшина Гик
Я указал дамп ядра для размещения в другой папке, поэтому он не находится в / tmp.
Андреас Хартманн
Я не хочу использовать apport, я хочу исследовать свою проблему локально и не сообщать об ошибке, потому что это, вероятно, не ошибка apache.
Андреас Хартманн

Ответы:

4

ulimit -c unlimited влияет только на вашу текущую оболочку.

Вы можете подтвердить это, посмотрев на вывод cat /proc/$(pidof -s apache2).

Я добавил ulimit -c unlimitedк /etc/default/apache2и теперь cat /proc/$(pidof -s apache2)/limitsвключает в себя

Max core file size        unlimited            unlimited            bytes
Джей _silly_evarlast_ Рен
источник
Я попробовал это, но Apache (12 LTS) так и не смог сбросить ядро. Какие-нибудь мысли?
Иосип Родин
Нашел ответ - apport был включен /etc/default/apport, и он изменил шаблон дампа ядра ядра, чтобы удовлетворить себя. См. Serverfault.com/questions/470407/…
Йосип Родин
echo '/tmp/apache-coredumps/core-%e.%p'> / proc / sys / kernel / core_pattern
Rudger