使用Xdebug配置cachegrind时遇到问题


Trouble configuring cachegrind with Xdebug

我正在尝试为cachegrind配置Xdebug,但我无法启用profiler功能以转储已执行的网页。

我正在使用官方指南(以及其他一些具有类似设置的指南),它似乎不起作用。

我在我的两台Linux机器(Ubuntu和Fedora)上都试过了。Xdebug可以很好地调试,我可以为应用程序启动valgrind --tool=cachegrind,因此两者都应该正确安装。

我在php.ini中激活和取消激活profiler_enable和profiler_enable_trigger选项并重新启动服务器,没有运气。更改了输出目录,因为我认为它可能与权限有关。在URL中使用?XDEBUG_PROFILER=1标志作为参数似乎也没有帮助。

还有其他关于cachegrind配置的线索吗?

下面的基本xdebug.ini应该可以做到:

; check that the path is ok for you
zend_extension=/usr/lib/php5/20090626/xdebug.so
xdebug.profiler_enable=1
xdebug.profiler_output_name = cachegring.out.%s
xdebug.profiler_output_dir = /tmp

注意,它为每个请求启用分析器,这是一个重要的性能问题。但是,您应该先测试这是否有效。如果你看到它工作,默认禁用它。


关于valgrind

请注意,这是不可能的,你正在尝试做什么。xdebug分析器不是为使用/连接到valgrind而设计的。它只是使用与valgrind相同的输出格式。因此,格式与以下示例相同:

valgrind --tool=cachegrind --cachegrind-out-file=test.cachegrind ls -al

通常您将使用GUI程序分析cachegrind文件,例如linux上的kcachegrind和windows上的wincachegrind