php - Xdebug + IntelliJ:调试器总是在真实设置断点后面一行
问题描述
在我的 Symfony 应用程序中,我使用 IntelliJ Ultimate + Xdebug + Vagrant VM 和 IntelliJ 中的远程调试设置。在 Vagrant 框中安装了 PHP 7.2 和 Xdebug 2.6
当我通过浏览器启动调试会话时,一切正常。我可以完美地遍历我的所有代码。
但是当我通过
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
等等 ...
我能找到的唯一提示是:检查路径映射。我敢肯定,路径映射确实没问题,因为它实际上找到了我要调试的所有文件,但它停在错误的行上。
我还比较了我的 vagrant 源代码和本地源代码中的文件。它们完全相同。我认为它们不能不同步,因为源代码是通过共享文件夹与 VM 共享的。
我还查看了 Xdebug 日志文件,它告诉我行号。这些行号与我的本地代码中的完全相同,所以这里没有什么不寻常的。
奇怪的是:bin/console
php 文件工作正常,但从这里实例化的类却没有。
有人有线索吗,我还能检查什么?是否有已知的错误或其他任何东西?die()
它无法通过和命令调试我所有的命令行执行代码print()
...
解决方案
推荐阅读
- laravel - 如何在 laravel 的嵌套关系中访问父字段?
- javascript - simplepicker datetime picker Javascript的翻译
- mysql - 错误 1292 (22007):使用更新 stmt 时截断不正确的 INTEGER 值:“我的表中的第一个非整数结果”
- jquery - Django,jquery,基于数据库的自动完成,改进
- r - 矩阵中的错误:“dimnames”[2] 的长度不等于 Shiny App 上的数组范围
- html - 移除元素级显示:无使用 CSS
- python - 前 n 行的平均值
- sslhandshakeexception - 如果 Mutual TLS 失败,对客户端的响应应该是什么?
- angularjs - AngularJS 错误注入器将我发送到 https://code.angularjs.org/
- typeorm - TypeORM queryBuilder 链接