如何获得一个Apache核心转储?


8

我的14.10 Ubuntu服务器出现问题。执行某些操作后,我的apache2重新启动,出现分段错误错误。为了调试此问题,我想创建一个核心转储。我已经完成以下工作:

  • 添加CoreDumpDirectory /tmp/apache-coredumps到配置文件
  • ulimit -c unlimited
  • apt-get install apache2-dbg php5-dbg
  • 重新启动apache并导致错误。日志声称目录中可能存在核心转储,但是它是空的。

我还尝试直接在apache2的可执行文件上使用gdb,但是apache除非通过apachectl或来启动,否则不会启动service apache2 start

如何获得核心转储来调试问题,或者如何gdb直接将其附加到Apache?


对于前者,请看这里:serverfault.com/questions/470407/…对于后者,请看这里:httpd.apache.org/dev/debugging.html#gdb
Geek Elder Geek

不幸的是,这没有用。我尝试按照第一个链接中的建议设置权限,但是仍然没有转储内核。我已经知道第二个链接。它实际上并没有以ubuntu特定的方式回答我的问题(Ubuntu没有httpd可执行文件,并且由于前面提到的原因,直接调用apache2无效)。
Andreas Hartmann

也许是/ tmp中的coredump?
年长者怪胎

我将核心转储指定为放置在其他文件夹中,因此它不在/ tmp中。
Andreas Hartmann

我不想使用评估,我想在本地检查我的问题,而不是报告错误,因为它可能不是apache的错误。
Andreas Hartmann

Answers:


4

ulimit -c unlimited 仅影响您当前的外壳。

您可以通过查看output确认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)转储内核。有什么想法吗?
Josip Rodin

发现答案-apport已在中启用/etc/default/apport,它更改了内核核心转储模式以适合自己。见serverfault.com/questions/470407/...
约瑟普·罗丹

echo'/tmp/apache
coredumps
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.