Xdebug 不适用于 var_dump()

Posted

技术标签:

【中文标题】Xdebug 不适用于 var_dump()【英文标题】:Xdebug does not work with var_dump() 【发布时间】:2012-08-06 14:19:57 【问题描述】:

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

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

加上甚至 xdebug_var_dump() 不会突出显示任何内容。它可以工作,但看起来像普通的 var_dump()。

【问题讨论】:

【参考方案1】:

我在你的 php_info() 中找到了“xdebug.default_enable Off Off”选项。我还注意到,在 EasyPHP 的最新版本中,此选项已关闭。所以通过在 php.ini 中设置这一行来开启它:

xdebug.default_enable=1

下一步只是一个常见的操作,它完全禁用 var_dump 和 html 输出中的其他错误(不是你的情况,但可能对其他人有帮助):

html_errors = On

【讨论】:

谢谢,刚刚发现 html_errors 存在很长时间的问题,因为它们在我的 php.ini 中默认被禁用。非常感谢你,点赞 还要确保xdebug.overload_var_dump 为1 或2。如果设置为0,它将不会替换默认的php var_dump【参考方案2】:

对于 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

【讨论】:

【参考方案3】:

关闭xdebug.mode=debug in php.ini like

;xdebug.mode=debug

并重新启动 Apache。

【讨论】:

【参考方案4】:

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

xdebug.mode= develop

您还可以按照here 的说明一次使用多种模式。

【讨论】:

这行得通,但它并没有在断点处停止。但是你可以组合多种模式,所以请确保至少有xdebug.mode=develop,debug【参考方案5】:

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

因此,您可能希望在 php.ini 中包含以下内容:

xdebug.mode=develop,debug

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

【讨论】:

这应该是最受欢迎的答案 b/c 将其设置为 develop停止断点工作 这里是来自文档的链接,上面说实际上官方支持用逗号分隔的多个值 - xdebug.org/docs/all_settings#mode

以上是关于Xdebug 不适用于 var_dump()的主要内容,如果未能解决你的问题,请参考以下文章

如何让 xdebug var_dump 显示完整的对象/数组

wamp下var_dump()相关问题

var_dump()函数输出不完整,有省略号?解决办法

var_dump() 格式化输出 | 显示不全

PHPstorm+XDebug+Chrome/Firefox超详细教程(图文)

Xdebug的安装配置和使用