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

2022-08-30 15:44:42

我正在使用Visual Studio Code 1.16.1和Felix Becker的PHP Debug扩展。我连接到XDebug刚刚好,可以在调试窗格中设置断点和查看变量,而不会出现任何问题。

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

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

我不能声明类,函数,使用控制结构(,等)。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)

不起作用:

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

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

谢谢。

enter image description here


答案 1

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


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

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

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

VSCode's watch variable section

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


答案 2

您只能进行实际调试。与活动程序交互以修复它很有用,而不是像Python或Javascript控制台那样作为游乐场。我想创建一些脚本,创建一个PHP CLI文件。

您应该使用 print 而不是 echo,并且 var_dump() 而不是 $var_dump()。然后,这取决于您是处于 CLI 模式还是 FPM 模式(Web 服务器)。如果在调试会话中连接到 Web 服务器,则该服务器不会打印回调试器终端,而是打印回 Web 服务器响应。


推荐