是否可以将调试器附加到正在运行的PHP进程?
问题描述:
我有一个PHP脚本,我们每隔几分钟通过cron条目运行一次,并且每隔一段时间(大约每周一次)而不是正常结束,它仍然运行,占用100%的CPU核心假设,无限循环)是否可以将调试器附加到正在运行的PHP进程?
看着代码和“思考”它,我找不到任何理由发生,但它确实如此。到目前为止,当我得到3个或更多的那些我杀了他们,并且解决了CPU问题,但是我想对此做点什么...
有什么办法来转储进程或附加给它一个调试器,以便我可以知道东西,什么它在做什么? (只要它在哪一条PHP线上就会有很大的帮助)。我不介意在转储过程中死亡,或者其他任何事情。
这是一个PHP脚本,从命令行运行在CentOS 5.6机器上,当涉及到* nix时,我是一个很棒的noob,所以如果你能指点我一些傻瓜教程,太棒了。
谢谢! Daniel
答
我没有办法知道要将调试器附加到没有专门用PHP调试扩展(例如xdebug)准备的PHP进程。但是,使用更通用的实用程序strace
可以猜测正在进行的操作,它可以提供进程运行的系统调用的跟踪信息。这只会告诉你正在执行什么系统调用,但这可能已经足够(取决于上下文)以确定发生了什么。
是的它是:http://dirac.org/linux/gdb/06-Debugging_A_Running_Process.php(但这可能不是你正在寻找的调试器)。 – hakre