В своем приложении 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()
...