Xdebug + IntelliJ: отладчик всегда на одну строку от реальной установленной точки останова - PullRequest
0 голосов
/ 11 октября 2018

В своем приложении 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 isn 't инициализирован еще (как видно в разделе переменных).Если я теперь перешагну через

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

$a сейчас инициализируется, но не выводится командой echo, а отладчик находится в пустой строке.

Следующий шаг приводит к

  $a = "abc";
  echo $a;

  echo "test";
o

и т. Д. *

Единственный совет, который я могу найти: Проверьте отображение пути.Я уверен, что сопоставление путей действительно хорошо, потому что оно на самом деле находит все файлы, которые я хочу отладить, но останавливается не на той строке.

Я также сравнил файлы в своем бродячем исходном коде и локальном исходном коде,Они точно такие же.Я думаю, что они не могут быть не синхронизированы, потому что исходный код передается на виртуальную машину через общую папку.

Я также заглянул в файл журнала Xdebug, в котором указаны номера строк.Эти номера строк точно такие же, как и в моем локальном коде, поэтому здесь нет ничего необычного.

Странно: файл bin/console php работает правильно, но классы, созданные здесь, - нет.

У кого-нибудь есть подсказка, что я могу проверить еще?Есть известная ошибка или что-то еще?Нет возможности отладить весь исполняемый код моей командной строки с помощью команд die() и print() ...

...