Xdebug + IntelliJ:调试器始终比实际设置的断点晚

时间:2018-10-11 16:26:22

标签: php intellij-idea vagrant phpstorm xdebug

在我的Symfony应用程序中,我将IntelliJ Ultimate + Xdebug + Vagrant VM与IntelliJ中的远程调试设置一起使用。在“ Vagrant”框中,安装了PHP 7.2和Xdebug 2.6

当我通过浏览器启动调试会话时,一切正常。我可以完美地完成所有代码。

但是当我通过

在VM内部启动远程调试会话时
 XDEBUG_CONFIG="remote_host=10.10.0.1" PHP_IDE_CONFIG="serverName=abc" bin/console <command>

Xdebug也可以使用,但是错过了本地源代码中的代码行。在IntelliJ中,调试器似乎总是排在前面。例如,当在本地源代码中创建一个新变量时,我可以看到它。一步之后,调试器信息向我显示了它已创建。另一个例子:如果我跨过代码行,我突然会空着一行。

如果我将断点设置如下

  $a = "abc";
o echo $a;

  echo "test";

调试器已停止,但$a尚未初始化(如变量部分所示)。如果我现在走过去

  $a = "abc";
  echo $a;
o
  echo "test";

$a现在已初始化,但未通过echo命令输出,并且调试器处于空行。

下一步将导致

  $a = "abc";
  echo $a;

  echo "test";
o

以此类推...

我能找到的唯一提示是:检查路径映射。我敢肯定,路径映射确实可以,因为它实际上找到了我要调试的所有文件,但停止在错误的行上。

我还比较了流浪者源代码和本地源代码中的文件。他们是完全一样的。我认为它们不能不同步,因为源代码是通过共享文件夹与VM共享的。

我还查看了Xdebug日志文件,该文件告诉我行号。这些行号与我的本地代码完全相同,因此这里没有什么异常。

奇怪的是:bin/console php文件可以正常工作,但是从此处实例化的类却不能。

有人有一个线索,我还能检查其他什么吗?是否存在已知的错误或其他?通过die()print()命令调试我的所有命令行执行代码都是没有选择的……

0 个答案:

没有答案