【问题标题】:XDebug really slowXDebug 真的很慢
【发布时间】:2012-01-30 10:24:47
【问题描述】:

我正在尝试让 XDebug 在我的本地 wamp 安装(统一服务器 8)上工作。

但是当我把
xdebug.remote_enable=1

在我的 IDE 使用 xdebug 所需的 php.ini 中,加载页面变得非常慢,因为每页慢 5 秒。不过调试器可以工作。

我以前没有使用过 xdebug,但我可以想象它通常不应该花这么长时间。我很确定这可能与使用 symfony2 框架有关。

有人知道是什么原因造成的吗?

【问题讨论】:

  • 我从 symfony 的分析器中注意到,最大的减速发生在 firewall 事件中......
  • 考虑使用 Linux ;) 我惊讶地发现 Symfony 的运行速度快了大约 10 倍。在 Windows 上一个更大的项目的平均页面加载是令人讨厌的 8 秒,而在 Linux 上相同的应用程序,相同的页面只需要 800 毫秒。在 linux 上添加 xdebug 轻而易举,您几乎不会注意到性能差异。
  • 我正在运行 linux,一切都很好而且很快,然后突然 xdebug 慢了下来。我必须从字面上单击暂停,因为跨步不再有效。不知道为什么。

标签: apache symfony xdebug


【解决方案1】:

这可能是因为它就是这样做的!

检查 xdebug 日志的默认存储位置(大多数时候 /tmp/xdebug/something) 这在 Windows 上会与在 unix/linux 系统上有所不同。

如果您希望将它们放置/命名到其他地方,请将它们设置在您的 php.ini 中:

xdebug.profiler_output_dir 类型:字符串,默认值:/tmp 分析器输出将被写入的目录,确保运行 PHP 的用户对该目录具有写入权限。无法使用 ini_set() 在脚本中设置此设置。

xdebug.profiler_output_name 类型:字符串,默认值:cachegrind.out.%p

此设置确定用于将跟踪转储到的文件的名称。该设置使用格式说明符指定格式,与 sprintf() 和 strftime() 非常相似。有几种格式说明符可用于格式化文件名。

生成这些文件会对您的系统造成负担。但这些是您分析代码所需要的。

在你真正再次使用它之前,还要去阅读http://xdebug.org/docs,这样你就知道你到底想做什么。

【讨论】:

  • 好吧,我确实知道 xdebug 的用途,我打算只使用它来设置断点来调试我的代码。我已禁用分析器,但它仍然很慢。我的问题是什么可能导致这种缓慢,而不是我如何设置分析器。
  • 分析器与远程调试器无关。调试器确实让事情变慢了,但不是这样。
  • @geoffreydv 如果您使用调试器/分析器,您会不断地在磁盘上写入。这是你的瓶颈。你无法逃避。
  • 使用Virtualbox好像没有写入磁盘,但还是很慢。
  • @arieltools 您能否详细说明“使用 Virtualbox 似乎没有写入磁盘”是什么意思?感觉不对,因为它像任何其他应用程序一样写入数据。
【解决方案2】:

根据关于 SO 的另一个答案,您需要在 php.ini 中设置 xdebug.remote_autostart = 0

【讨论】:

    猜你喜欢
    • 2017-11-10
    • 2010-12-28
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    相关资源
    最近更新 更多