#breakpoints #xdebug #phpstorm
#точки останова #ошибка xdebug #phpstorm
Вопрос:
Я использую phpstorm для разработки веб-сайтов, но по какой-то причине точки останова не синхронизированы. Вот моя ситуация:
У меня есть папка, в которой я храню все свои проекты. На том же компьютере у меня также есть xampp, работающий в качестве сервера тестирования. В phpstorm у меня есть сервер тестирования xampp, настроенный как сервер подключенных папок. Но когда я применяю точки останова в исходных файлах, эти точки останова не синхронизируются с файлами в папке htdocs xampp. Как я могу это решить?
Ответ №1:
Похоже, вам нужно установить сопоставления путей. Об этом есть некоторая информация — http://blogs.jetbrains.com/webide/2011/03/configure-php-debugging-in-phpstorm-2-0
Комментарии:
1. Я уже делал это, но угадайте, что: я просто перепроверяю свои настройки и заметил, что случайно использовал не тот сервер… В любом случае, спасибо за ответ!
2. Эти настройки сопоставления имеют тенденцию время от времени просто исчезать (просто столкнулся с этим снова ), так что для тех, кто столкнулся с этим вопросом, погуглите: проверьте сопоставления!
Ответ №2:
У меня была похожая проблема, когда я устанавливал точку останова, но она не останавливалась на ней во время отладки. Мой веб-сервер использует букву виртуального диска, чтобы упростить путь к httdocs. Итак, моя ошибка заключалась в том, что я не установил виртуальный путь в качестве корневого содержимого проекта в File-Settings-Directories, а реальный путь к моей локальной папке
Ответ №3:
У меня была аналогичная проблема с phpstorm 4.x / xdebug 2.2.3 / php 5.4.3
Я мог бы установить точку останова высоко в коде, и это сработало бы, но, просматривая строки, я мог видеть, что отладчик не синхронизировался с фактическим кодом. Это означало, что некоторые точки останова были пропущены.
После долгих экспериментов я, наконец, понял, что проблема была вызвана тем, что у меня были разрывы строк в моих переменных.
Например:
$q = "SELECT *
FROM table
WHERE
product_id = 'whatever'
AND product_status != 'inactive'";
отладчик вылетел бы на 4-5 строк, когда дошел бы до этого оператора.
Меняем это на:
$q = "SELECT * FROM table WHERE product_id = 'whatever' AND product_status != 'inactive'";
исправлена проблема!
Очевидно, что это повлияет на любое объявление var с разрывами строк, а не только на те, которые предназначены для запросов SQL. Немного неудобно, потому что я делаю это для удобства чтения, но я надеюсь, что это сэкономит время кому-то еще с такой же проблемой.
Ответ №4:
Возможно, у вас это не сработает, но у меня просто домашняя папка моего MAMP указывает на корневую папку моего проекта, поэтому синхронизация / монтирование не требуется
Комментарии:
1. Я не хочу этого делать: в папке моего проекта у меня больше файлов, чем я хочу на сервере (например, файлы photoshop и т.д.), И я работаю из разных папок на одном сервере xampp. Если я захочу это изменить, мне придется полностью реорганизовать структуру папок на моем компьютере.