Xdebug - 在 Step Debugging 中增加 var_display_max_depth

问题描述

根据 Xdebug 文档:

整数 xdebug.var_display_max_depth = 3 #
控制使用 xdebug_var_dump()、xdebug.show_local_vars 或进行函数跟踪时显示变量时数组元素和对象属性的嵌套级别数。 您可以选择的最大值为 1023。您也可以使用 -1 作为值来选择此最大值。
此设置对通过步骤调试功能发送给客户端的子项数量没有任何影响。

但是,我正在尝试在 PHPStorm 中显示嵌套对象,并且预期会得到以下结果:

enter image description here

重现:

$n = new Map();
$n["test"] = new Map();
$n["test"]->put("lorem",new Map());
$n["test"]["lorem"]->put("ipsum","dolor");
$m = ["m" => ["k" => ["r" => ["h" => ["test_var"]]]]];

所以我有两个问题:

  • 为什么 Xdebug 可以显示嵌套数组中的值,而在使用其他对象时却不能?
  • 如何“强制”Xdebug 深入到 Ds\Map 对象中?

解决方法

Xdebug 和 PhpStorm 都应该能够处理这两种情况。 var_display_max_children 设置确实不是为了单步调试,但是协议允许 PhpStorm 请求更多信息。

可能是这里存在错误,或者您的 PhpStorm 旧版本存在一些问题,请与 Xdebug 讨论此问题。

无论哪种情况,我都建议您使用 简短自包含 脚本在 https://bugs.xdebug.org 提交错误报告。请按照 https://xdebug.org/reporting-bugs

上的说明进行操作