You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调试递归代码:如何增加Codeception堆栈跟踪的调用显示数量?

解决Codeception堆栈跟踪显示条数限制的问题

从你的描述和提供的Xdebug配置来看,xdebug.max_stack_frames已经设为-1(无限制),所以问题确实出在Codeception自身对堆栈跟踪的截断机制上。下面给你几个可行的解决办法:

方法1:修改Codeception全局配置

在项目根目录的codeception.yml,或者对应测试套件的配置文件(比如tests/unit.suite.yml)中,添加error_handler配置项,通过maxTraceLines参数设置你需要的堆栈行数:

error_handler:
  maxTraceLines: 100 # 可根据需求设置更大数值,比如200

保存配置后重新运行测试,就能看到完整的递归调用堆栈了。

方法2:单测试用例临时调整

如果只需要针对当前调试的测试临时修改,可以在测试类的setUp方法中手动调整ErrorHandler的参数:

public function setUp()
{
    parent::setUp();
    $errorHandler = \Codeception\Subscriber\ErrorHandler::getInstance();
    $errorHandler->setMaxTraceLines(100); // 设置你需要的行数
}

这种方式不用改动全局配置,适合临时调试特定测试场景。

补充说明

Codeception的默认堆栈跟踪行数限制是10,这就是你只看到最后10条调用的原因。调整上述配置后,就能完整看到递归代码的执行路径,帮你定位DateTimeImmutable无法转为字符串的具体触发点。


内容的提问来源于stack exchange,提问作者CJ Dennis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:16:49