我的问题是基于 本文.

如何通过XDUBUG2制作有关PHP代码的分析数据,然后将其放入Kcachegrind之类的应用程序?

我在Ubuntu中成功使用了Xdebug,因为它突出了浏览器中的错误消息。但是,我没有找到任何终端工具 xdebug.

我想对我的PHP代码有视觉视图

alt text

有帮助吗?

解决方案

将此行添加到您的php.ini

xdebug.profiler_enable = 1

然后,如果您碰巧通过Web服务器运行PHP,则需要重新启动Web服务器,否则不会拾取conf更改。

如果您正在通过CLI运行PHP,那么当然无需重新启动。

现在,当您运行PHP脚本时,将在xdebug.profiler_output_dir php.ini设置的目录中创建一个cachegrind.out.pid文件。默认情况下是 /TMP。

该文件是Kcachegrind能够加载的一个文件。

还有其他手段可以调用此个人资料一代,您可以在 http://www.xdebug.org/docs/all_settings#profiler_enable

其他提示

我遇到了类似的情况,在这种情况下,我只能访问终端,而不是可以进行测试的视觉环境。更糟糕的是,我正在使用Windows机器和油灰。

可用的解决方案是

  1. 安装WebGrind(http://code.google.com/p/webgrind/)
  2. 运行Xdebug并将cachegrind.out文件复制到具有可探测器查看器的计算机上。

对我来说,答案是在我的本地Windows机器上SCP将Cachegrind文件SCP SCP,并使用Wincachegrind来查看它们。您可以将它们scp scp放在Linux框中,并在文件上运行kcachegrind。不利的一面是,您可能没有相同的文件结构,因此您将无法查看Sourcecode。如果您还在本地计算机上也有源,或者可以将其设置在那里,则也可以解决此问题。打开VIM(或其他编辑器)中的Cachegrind文件,进行全局搜索,然后在路径上替换将其更改为本地计算机上正确的源路径。

我希望这就是您想要的。

编辑以解决评论:

如果您正在努力获取有些不同的呼叫文件。为此,您需要在Linux(我认为您是)中运行,并具有可用的CallGrind和Valgrind程序。这里要假设的最后一件事是,您正在作为Apache Mod运行PHP,而不是其他方式。使用CallGrind工具对Apache的启动,然后在浏览器中运行请求。这不仅会在PHP调用树上提供详细信息,而且还可以在Apache中许多可能引起麻烦的信息上提供详细信息。

这是一个示例

sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/httpd -X

-X将仅使用一个线程以调试模式启动Apache。从这里打开一个网络浏览器,并点击您想要的PHP脚本。然后返回并关闭Apache。这也应该结束Callgrind分析。

如果您不需要Apache或Web浏览器,则可以尝试使用PHP命令运行CallGrind

sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/php my_php_script.php

这应该给您相同的结果,但没有所有的Apache东西。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top