我的问题基于this article。
如何通过Xdubug2制作有关PHP代码的分析数据,然后将其放到像KCacheGrind这样的应用程序中?
我在Ubuntu中成功使用了Xdebug,因为它在浏览器中突出显示了我的错误消息。但是,我找不到像xdebug
这样的终端工具。
我希望能够直观地看到我的PHP代码
答案 0 :(得分:4)
将此行添加到php.ini
xdebug.profiler_enable = 1
然后,如果您碰巧通过网络服务器运行PHP,则需要重新启动网络服务器,否则不会更改配置更改。
如果您通过cli运行PHP,那么当然不需要重新启动。
现在,当您运行PHP脚本时,会在xdebug.profiler_output_dir php.ini设置指定的目录中创建cachegrind.out.PID文件。默认情况下为/ tmp。
该文件是kcachegrind能够加载的文件。
还有其他方法可以调用此配置文件生成,您可以在http://www.xdebug.org/docs/all_settings#profiler_enable
上阅读它们答案 1 :(得分:3)
看看WebGrind(http://code.google.com/p/webgrind/)
答案 2 :(得分:1)
我遇到了类似的情况,我只能访问终端,而不是可以测试的可视环境。更糟糕的是,我使用的是Windows机器和Putty。
可用的解决方案
对我来说,答案是SCP将cachegrind文件存储到我的本地Windows机器上,并使用WinCachegrind查看它们。您可以将它们放入您的Linux机器上并在文件上运行KCacheGrind。这样做的缺点是,您可能没有相同的文件结构,因此您将无法查看源代码。如果您的本地计算机上也有源,或者可以在那里获得源,您也可以解决此问题。在vim(或其他编辑器)中打开cachegrind文件并进行全局搜索并替换路径,将它们更改为本地计算机上的正确源路径。
我希望这就是你要找的东西。
编辑以发表评论:
如果您正在努力获得一个稍微不同的callgrind文件。为此,您需要在Linux中运行(我认为您是这样)并且可以使用callgrind和valgrind程序。这里假设的最后一件事是你将PHP作为Apache mod运行而不是以其他方式运行。使用callgrind工具来启动apache,然后在浏览器中运行请求。这将不仅为您提供有关php调用树的详细信息,还将为您提供可能导致问题的Apache中的许多信息。
这是
的一个例子sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/httpd -X
-X将在调试模式下启动apache,只有一个线程。从这里打开一个Web浏览器,点击你想要的PHP脚本。然后返回并关闭apache。这也应该结束callgrind解析。
如果您不需要apache或Web浏览器,可以尝试使用php命令运行callgrind
sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/php my_php_script.php
这应该会给你相同的结果,但没有所有的apache东西。