xdebug://debug-eval 中未捕获异常“ErrorException”

问题描述 投票:0回答:3

我正在使用

Intellij 14.1.4、PHP v5.5.38、Xdebug v2.2.3

我做了一个更改,定义了 php $GLOBALS['CRED_TYPE'] 变量。我后来删除了该变量。我检查了所有地方,这个变量不再在任何地方定义。它只是不存在于我的代码中。

但由于某种原因我仍然遇到以下问题

( ! ) 致命错误:第 1 行 xdebug://debug-eval 中未捕获异常“ErrorException”,并带有消息“未定义索引:CRED_TYPE” (!)ErrorException:未定义索引:第 1 行 xdebug://debug-eval 中的 CRED_TYPE

我什至重新克隆了整个项目,但每当我尝试调试它时,它就会丢失(崩溃),有时我会遇到此异常。这不应该在那里,因为没有这样的代码,但为什么我会得到这个。

文件也没有回溯。我不知道该怎么办,请问有什么想法吗?

php intellij-idea xdebug
3个回答
22
投票

解码错误消息的关键是失败代码的位置:

xdebug://debug-eval on line 1
。它不是一个文件,而是由调试器动态生成和评估的代码。

每次将脚本停止到调试器中时,调试器客户端(PhpStorm、NetBeans 等)都会针对每个监视的表达式向

xdebug
PHP 扩展(调试器服务器组件)发送一个
eval()
命令。此代码在代码的当前范围内运行(脚本停止的位置)。

由于没有

$CRED_TYPE
全局变量,计算表达式
$GLOBALS['CRED_TYPE']
会产生一个通知(“未定义的索引:CRED_TYPE'”),并且项目设置的自定义错误处理程序会生成并抛出一个
ErrorException
它。异常未捕获,脚本异常结束。

确保调试器的“监视”窗口中的表达式列表不包含在放置断点的代码范围内无效的表达式。


2
投票

这是 XDEBUG 问题,可以通过将 XDEBUG 版本降级(或者升级,如果您使用的是非常旧的 PHP)到 2.6.1 来解决。 我无意中遇到了这个问题,但找不到答案。重新安装服务器、PHP、PHPStorm、不同版本的 XDEBUG 都没有帮助。 对于 MacOS 可以使用

pecl install xdebug-2.6.1

如果您已经有较新的版本,您可以使用命令

pecl uninstall xdebug

经过几个小时的调查,这篇文章中的答案对我帮助很大。


0
投票

添加答案只是为了让 @axiac@globalSchmidt 评论有更多可见性。

检查调试器中的 Watch 表达式。错误的根源可能就在那里。

© www.soinside.com 2019 - 2024. All rights reserved.