Xdebug 不适用于 var_dump()


Xdebug does not work with var_dump()

我不知道为什么,但 xdebug 没有突出显示 var_dump()。但是配置似乎很好。不知道为什么...有什么建议吗?

这是我的phpinfo(); http://pastebin.com/A45dqnWN

另外,甚至 xdebug_var_dump() 也没有突出显示任何内容。它可以工作,但看起来像正常的var_dump()。

我在你php_info()中找到了"xdebug.default_enable关闭"选项。我还注意到,在最新版本的EasyPHP中,此选项是关闭的。因此,通过在 php 中设置此行来打开它.ini:

xdebug.default_enable=1

接下来只是完全禁用HTML输出中的var_dump和其他错误的常见操作(不是您的情况,但可能对其他人有帮助):

html_errors = On

对于 Xdebug 3,您需要在 php 中启用开发模式.ini:

xdebug.mode= develop

您也可以一次使用多种模式,如此处所述。

接受以下值(对于 xdebug.mode):

  • 关闭

    未启用任何内容。Xdebug 除了检查是否启用了功能外,没有任何工作。如果要接近 0 的开销,请使用此设置。

  • 发展

    启用开发帮助程序,包括重载的 var_dump()。

  • 覆盖
    启用代码覆盖率

    分析以生成代码覆盖率报告,主要与 PHPUnit 结合使用。

  • 调试

    启用单步调试。这可用于在代码运行时单步执行代码,并分析变量的值。

  • GCSTATS

    启用垃圾回收统计信息以收集有关 PHP 垃圾回收机制的统计信息。

  • 轮廓

    启用性能分析,您可以使用 KCacheGrind 等工具分析性能瓶颈。

  • 跟踪

    启用函数跟踪功能,该功能允许您记录每个函数调用,包括参数、变量赋值和在请求文件期间产生的返回值。

您可以通过逗号分隔多个模式的标识符作为值来同时启用多个模式 xdebug.modexdebug.mode=develop,trace

如 Xdebug v3 的@Shadoweb所述,您希望debug允许在断点处停止,并develop格式化var_dump

因此.ini您可能需要在 php 中执行以下操作:

xdebug.mode=develop,debug

顺便说一句,我还需要xdebug.start_with_request=yes来替换重命名的xdebug.xdebug.remote_enable=1设置,以使步骤调试在我的 IDE 中正常工作。

对于 php 7.0.2 和 xdebug 2.4.0

xdebug.default_enable=1

+

html_errors = On

仍然不着色 xdebug_var_dump() 输出。

但是这个补丁解决了我的问题。它仅适用于 xdebug.c 和 xdebug_var_dump()。我认为他们犯了一个错误,即xdebug_var_dump只有在需要过载功能时才有效。

@@ -2191,11 +2191,6 @@
    int     i, len;
    char   *val;
-   if (!XG(overload_var_dump)) {
-       XG(orig_var_dump_func)(INTERNAL_FUNCTION_PARAM_PASSTHRU);
-       return;
-   }
-
    argc = ZEND_NUM_ARGS();
 #if PHP_VERSION_ID >= 70000

在 php 中关闭 xdebug.mode=debug.ini

;xdebug.mode=debug

并重新启动阿帕奇。