【问题标题】:Why aren't all properties of an object being shown in the variables section in the debugger为什么不是对象的所有属性都显示在调试器的变量部分中
【发布时间】:2020-05-23 23:29:26
【问题描述】:

我在一些 PHP 代码上使用 XDebug 和 Visual Studio Code 调试器,而变量部分没有显示我的一个对象的所有属性。下面的屏幕截图显示,如果我将 $this->_data 添加到 Watch 部分,则该属性确实存在。但是,_data 未在变量部分的$this 中显示为属性。为什么 Visual Studio Code 没有显示 $this 中的所有属性,我如何让它显示所有属性?

【问题讨论】:

  • 该属性不会是 __get 魔术函数调用的结果吗?
  • 谢谢你,你是对的。这是受保护的财产。

标签: php visual-studio-code xdebug vscode-debugger


【解决方案1】:

你应该尝试设置

ini_set('xdebug.var_display_max_depth', -1);
ini_set('xdebug.var_display_max_children', -1);
ini_set('xdebug.var_display_max_data', -1)

您还应该阅读有关 xdebugs 设置的说明:https://xdebug.org/docs/all_settings

【讨论】:

  • 感谢您的回复。在这种情况下,_data 实际上是一个受保护的变量,这就是它没有被显示的原因。
  • 应显示受保护的变量。如果没有,请向bugs.xdebug.org报告一个带有源代码的小但自包含的错误@
  • 查看 xdebug 的文档 (xdebug.org/docs/display#var_display_max_children),看起来这些设置在使用“Step Debugging”(我相信 VSCode 正在使用)时无效。
【解决方案2】:

这个问题与属性/字段是否私有/受保护有关。

您必须通过命令 show_hidden=1 告诉 XDebug 将私有字段等详细信息转发到您的 IDE。

在带有Felix Beckers php debugger 扩展名的VSCode 中,您可以通过launch.json 添加字段xdebugSettings 来添加此设置(有关详细信息,请参阅他们的文档)

以下内容对我有用:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9090,
            "xdebugSettings": {
                "max_children": 200,
                "max_data": 512,
                "max_depth": 4,
                "show_hidden": 1 //< show/forward private field info to the IDE
            }
        }
    ]
}

注意:远程配置似乎不支持上述任何设置的 -l。

【讨论】:

    猜你喜欢
    • 2019-05-07
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    • 2012-07-08
    • 2013-02-27
    • 1970-01-01
    相关资源
    最近更新 更多