xdebug в проектах в netbeans

Вот ситуация. У меня есть несколько классов, которые находятся в одном проекте... Мой основной код находится в другом проекте... и я разделил его, потому что я использую GIT в качестве своего SCM... Итак, когда я отлаживаю свой основной код ... я хотел бы войти в классы и отладить их, но xdebug не позволит мне войти в них ... и я предполагаю, что это потому, что классы находятся в другом проекте ... есть идеи?

Заранее спасибо...


person Yogesh Yogi Patel    schedule 21.04.2011    source источник


Ответы (1)


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

Предположим, что отдельный проект содержит только один класс, Foo, для простоты. Предположим также, что Foo присутствует в развернутом «основном коде» в каталоге и файле /maincode/external/lib/Foo.php. Наконец, давайте предположим, что /maincode/external/lib существует как каталог в вашем проекте «основного кода» с контролируемой версией, и что он содержит только файл-заполнитель и в остальном пуст.

Во-первых, используйте один из многих методов, предоставляемых git, чтобы игнорировать содержимое каталога /maincode/external/lib в каталоге проекта NetBeans для этого проекта. Мы собираемся сделать так, чтобы он выглядел так, как будто он содержит что-то, и мы не хотим, чтобы этот каталог, который в противном случае должен быть пустым, по ошибке зафиксировал изменения.

Теперь, когда он игнорируется, создайте символическую ссылку в этом каталоге на Foo.php в другом проекте. В Unix вам нужна команда ln, например.

ln -s /path/to/project/files/MyFooProject/Foo.php Foo.php

В Windows вы ищете команду mklink, например.

mklink Foo.php C:\path\to\project\files\MyFooProject\Foo.php

Дайте NetBeans минуту или две подумать об этом (или форсируйте проблему, вызвав команду «Сканировать на наличие внешних изменений» в меню «Источник»), и вы должны увидеть Foo.php в проекте «maincode», где вы сделали символическая ссылка.

Теперь, когда вы отслеживаете выполнение и вам нужно войти в Foo.php, чтобы увидеть, что делает класс Foo, вы войдете в тот, который находится в проекте «maincode». Однако, поскольку это символическая ссылка на файл в проекте «MyFooProject», любые сделанные вами изменения будут отражены там.

Просто убедитесь, что все разъединено (обычная команда rm в Unix и обычная команда del в Windows, но в каталоге, где находится символическая ссылка!), когда закончите. Кроме того, если в каталоге есть вещи, которые вы проигнорировали и хотите иметь возможность зафиксировать, отмените игнорирование этого каталога.

Если вам нужно сделать это для более чем одного файла, вы можете связать целые каталоги. Если вместо вышеуказанного вы обычно копируете содержимое «MyFooProject» в каталог /maincode/external/lib/myfoo/ в развернутой версии, просто свяжите соответствующий каталог, как вы сделали с файлом выше. В Windows, например,

cd \path\to\project\files\maincode\external\lib
mklink /D myfoo C:\path\to\project\files\MyFooProject

Это сделает символическую ссылку на каталог. Прошло некоторое время с тех пор, как я делал что-то подобное в Unix, поэтому я не помню точную команду для того же самого в этой ОС (или возможны ли символические ссылки на каталоги в Unix). После того, как каталог будет связан, вы должны увидеть новый каталог, а также все файлы и подкаталоги, отображаемые в вашем проекте «основного кода» NetBeans, готовые к вашему удовольствию по отслеживанию выполнения.

Опять же, не забудьте отменить связь и игнорировать все, как только вы закончите, чтобы вы не проснулись на следующее утро и не обнаружили себя в замешательстве. :) Чтобы отменить связь с каталогом в Windows...

cd \path\to\project\files\maincode\external\lib
rmdir myfoo

и он должен отключиться. (Просто будьте осторожны, когда вы удаляете и rmdir'ируете, что вы делаете это с символической ссылкой!)

person RobertB    schedule 24.04.2011
comment
О чувак... СПАСИБО!!!!! Так много... это сработало... я не знаю, почему я не подумал о символических ссылках... Еще раз, большое спасибо... - person Yogesh Yogi Patel; 26.04.2011