точки останова phpstorm и xdebug

#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. Если я захочу это изменить, мне придется полностью реорганизовать структуру папок на моем компьютере.