在我的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()
命令调试我的所有命令行执行代码都是没有选择的……