Visual Studio Code 的 PHP 调试控制台是交互式的吗?

JP *_*Lew 19 php debugging xdebug visual-studio-code

我将 Visual Studio Code 1.16.1 与 Felix Becker 的PHP Debug 扩展一起使用。我连接到 XDebug 就好了,可以在调试窗格中设置断点和查看变量,没有任何问题。

但是,调试控制台似乎没什么用,我只能运行超级基本的 PHP 命令,而且我似乎无法评估正常的 PHP 命令或与我的应用程序很好地交互。

error evaluating code尝试在调试控制台中键入任何 PHP 语句或表达式时,我始终如一。似乎我所能做的就是声明变量、数组和对象。

我不能声明的类,函数,使用控制结构(ifforeach等)。

作品:

$x = 4
//4

$x
//4

$x = new stdClass();
//stdClass

$x = [];
//array(0)

($x) ? yes : no
// yes

(!$x) ? yes : no
// no

preg_replace('/dog/', 'cat', 'The quick brown fox jumps over the lazy dog.')
// "The quick brown fox jumps over the lazy cat."

request()
//Illuminate\Http\Request (Laravel helper methods work)
Run Code Online (Sandbox Code Playgroud)

不起作用:

echo "yes"
//error evaluating code

if ($x == 4) { echo "yes" }
//error evaluating code

for ($i=0; $i < 5; $i++) { }
//error evaluating code

function foo() {}
//error evaluating code

class SimpleClass {}
//error evaluating code

$var_dump($x)
//null
Run Code Online (Sandbox Code Playgroud)

调试控制台应该像真正的 REPL 一样工作吗?我知道 PHPStorm 的控制台可以评估您扔给它的任何 PHP,Visual Studio Code 也可以这样做吗?还有其他人面临这个问题吗?

谢谢。

在此处输入图片说明

Top*_*ter 1

TL;博士; 这是一个与 XDebug 相关的问题,与 OP 的扩展无关,取消监视变量可能会修复 XDebug 行为。


该问题与 OP 的扩展无关,而是与 XDebug 相关的问题。

许多人通过在调试视图中从 VSCode 的“监视”列表中删除变量来解决此问题。

在下面的屏幕截图中,红色箭头表示一个按钮,您可以单击一次删除所有监视表达式:

VSCode 的监视变量部分

另请参阅:github.com/xdebug/vscode-php-debug/issues/192