所有 我一直试图让apache在信号进程/调试模式下运行,以便使用callgrind,并有一个简单的单个进程来进行调试。
有没有人有在单进程模式下运行apache的经验?
我尝试过httpd -X
。这可以通过一个进程启动apache,(很好)但是在这样运行的时候还没有找到一种干净的关闭它们的方法。唯一有效的方法是kill -9
。这也打乱了任何调试输出,因此在使用callgrind时不会让我更进一步。我正在运行的完整命令,对于那些感兴趣的人是:
valgrind --tool=callgrind /path/to/apache2/httpd -X
任何想法都赞赏。
谢谢
答案 0 :(得分:1)
有两个问题需要克服:
在ubuntu上,这应该可以解决问题:
source /etc/apache2/envvars
valgrind --tool=callgrind /usr/sbin/apache2 -X
在RHEL / centos / fedora上(未经测试):
source /etc/sysconfig/httpd
valgrind --tool=callgrind /usr/sbin/httpd -X
加载后,在访问站点之前,使callgrind文件全局可写(valgrind将在完成时删除临时文件):
chmod 777 /tmp/vgdb* callgrind*
完成后,请记住将callgrind文件的权限更改为更安全的文件。
Here's my blog post记录了我自己努力完成这项工作的努力。
答案 1 :(得分:0)
针对apache进程的简单kill -TERM
应该告诉它关闭。