phpStorm/Xdebug无法显示show子对象数组

Bri*_*ood 12 xdebug phpstorm

我正在尝试调试此代码:

  public function removeBlankLines() {
    $this->qp->find('br');
  } // <-- break point is here
Run Code Online (Sandbox Code Playgroud)

当我深入到$ this对象(使用phpStorm)时,我看不到我感兴趣的子数组.它只显示"无法获取属性"截图:

phpStorm调试窗格截图

我正在"侦听调试连接"功能.我正在从命令行运行脚本.PHP版本:

[bwood@mbp ~]$ php -v
PHP 5.4.24 (cli) (built: Jan 19 2014 21:32:15)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
Run Code Online (Sandbox Code Playgroud)

也许相关:http://bugs.xdebug.org/view.phpid = 996

Laz*_*One 10

http://bugs.xdebug.org/view.php?id=686

这是怎么一回事这样的类(SplObjectStorage,ArrayObject和一样)实现内部:

这是因为SplObjectStorage类的对象不是用户登陆的PHP对象,而是特殊的超级内部PHP对象.许多其他内部PHP类也会发生类似的情况.

AFAIK无法在PhpStorm方面做任何事情,直到xdebug能够"支持"它们.


更新:前面提到的xdebug票证已经解决了xdebug 2.3.3(最新的稳定xdebug版本是2.4.1),应该可以在调试器中查看这些类.


zai*_*eer 6

  • 将xdebug升级到版本2.3.3,它修复了问题 http://bugs.xdebug.org/view.php?id=686#c3116
  • 如果您正在运行vagrant,请确保在
    vagrant虚拟机中升级xdebug .
  • 升级说明可以从http://xdebug.org/wizard.php获得

    如果不能选择升级,则可以将内容作为最后的
    手段进行转储.

    在评估表达式时,你可以尝试类似的东西

    file_put_contents('dump.txt',var_export($ requiredVariable,true));

  • 这是一个很好的解决方法,`file_put_contents('dump.txt', var_export($requiredVariable,true));` 谢谢!该文件将在项目根目录中创建。 (2认同)