Как получить дамп ядра 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

Я попробовал это, но Apache (12 LTS) так и не смог сбросить ядро. Какие-нибудь мысли?
Иосип Родин

Нашел ответ - apport был включен /etc/default/apport, и он изменил шаблон дампа ядра ядра, чтобы удовлетворить себя. См. Serverfault.com/questions/470407/…
Йосип Родин

echo '/tmp/apache-coredumps/core-%e.%p'> / proc / sys / kernel / core_pattern
Rudger
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.