Почему XDebug игнорирует точки останова из NetBeans 6.8?

Я использую PHP 5.3.2, Apache 2.2.14 и xdebug 2.2.0rc1 на своем ноутбуке Ubuntu 10.04, и я пытаюсь настроить отладку на localhost в Netbeans 6.8.

Моя проблема в том, что точки останова, которые я установил в Netbeans, игнорируются. В противном случае это, кажется, работает правильно. Например, я получаю красивые var_dumps, трассировки xdebug, удаленные журналы xdebug и могу также поставить флажок, чтобы он разрывался в первой строке скрипта PHP.

На основе других сайтов и вопросов SO (например, SO1, SO2, SO3) я проверил все следующее:

  • Что файл php.ini, который я редактирую, используется
  • Этот xdebug загружается как zend_extension=/full/path/to/xdebug.so (не extension=xdebug.so)
  • Потокобезопасность отключена в PHP, и я использую не-потокобезопасную версию xdebug
  • Правильный путь к точкам останова в удаленном журнале xdebug (см. Фрагмент кода под этим списком, правильные пути в этом фрагменте и другие, которые не показаны)

    <- breakpoint_set -i 1014 -t line -s enabled -f file:///var/www/mockup/test.php -n 8 -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1014" state="enabled" id="135610002"></response>
    
  • Ручные вызовы xdebug_break() работают

Я также попытался настроить путь к серверу и путь к проекту в свойствах проекта Netbeans, потому что такое чувство может быть проблемой, но это не помогло. В настоящее время у меня есть путь к серверу как /var/www/mockup и путь проекта как /common/rsync/Dropbox/active-archives/code/Locus/mockup

Тем не мение, /var/www/mockup символическая ссылка на более длинный путь, так что я даже не знаю, нужно ли это? Не работает, указываю ли я отображение пути или нет...

3 ответа

Решение

Xdebug (через PHP) пока не поддерживает символические ссылки (существует проблема на http://bugs.xdebug.org/view.php?id=627). PHP / Xdebug всегда использует полностью развернутую ссылку, поэтому вам нужно убедиться, что netbeans устанавливает точку останова, например:

breakpoint_set -i 1014 -t line -s enabled -f file:///common/rsync/Dropbox/active-archives/code/Locus/mockup/test.php

Вам нужно будет настроить отображение пути. После того, как вы проверили, что breakpoint_set содержит правильный путь, он должен работать.

Основываясь на вкладе @Derick, решение, которое работает:

  • Измените свойства проекта NetBean для копирования файлов из исходной папки в /var/www/Locus
  • Удалить все карты путей из конфигурации Run
  • Направьте мой браузер на localhost/Locus/

Другими словами, это не только символические ссылки в пути к исходному файлу, которые вызывают проблемы, но и символические ссылки в пути к серверу.

Вот как я это исправил:

В моей локальной среде xampp на моем Mac я настроил vhost, который отображается в каталог за пределами корневого каталога apache (/source/my_project). Мой проект в Net Beans был настроен на использование /source/my_project в качестве местоположения проекта. Поэтому у меня не было проблем с отображением URL, поскольку путь, который я использовал в виртуальном хосте Apache, не отличался от того, который я использовал в Net Beans. Или, возможно, Apache думал, что этот каталог отличается от Net Beans, в любом случае я не смог заставить работать отображение пути. Но когда я переместил /source/my_project в /apache/htdocs/my_project и использовал этот путь для источника проекта моего Net Beans и отобразил мой vhost в этот каталог, тогда отладчик работал. PS У меня был установлен контроль версий в /source/my_project, поэтому я изменил my_project на символическую ссылку, и она все еще работала в subversion.

Другие вопросы по тегам