2010-08-06 11 views
19

Obecnie próbuję uzyskać Xdebug do pracy na naszym serwerze rozwoju. Jako klient używam netbeans, a połączenie do tej pory działa bezproblemowo. Ale kiedy próbuję ustawić punkt przerwania w granicach netbeans, jest to po prostu ignorowane.Xdebug ignoruje punkty przerwania

I tak, ja już googled dla godzin, a także znaleźć kilka pytań tutaj, że idealnie pasuje do mojego opisu: SO 1 SO 2

Ale to nie wydaje się rozwiązywać je dla mnie. Moduł Xdebug ładuje się przez zend_extension = path/to/xdebug. tak w

/etc/php5/conf.d/xdebug.ini

ja również spojrzał na php5/apache i php5/CLI php.ini, aby upewnić się, że nie jest ładowany z rozszerzeniem = gdzieś tam. Sprawdziłem również "dodatkowe spakowane pliki .ini" znalezione przez phpinfo() i wydaje się, że nie jest nigdzie załadowane.

Przy wykonywaniu php -m Widzę załadowany moduł Xdebug w

[PHP Modules]

aw

[Zend Modules]

Nie wiem, czy oznacza to, że jest ona nadal ładowane dwukrotnie lub jeśli tak jest w porządku? Nadal jeśli usunę zend_extension=/path/to/xdebug.so z conf.d/xdebug.ini to również nie jest już ładowany. Więc naprawdę zakładam, że jest tam tylko załadowany.

Jeżeli ustawić opcję remote_log jest zobaczyć, że Netbeans próbuje ustawić coś:

<- breakpoint_set -i 452 -t line -s enabled 
    -f file:///http:/development.xxx.de/users/itsame/index.php -n 15 
-> <response xmlns="urn:debugger_protocol_v1" 
    xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" 
      transaction_id="452" state="enabled" id="258870001"> 
    </response> 

Ale wydaje się mieć żadnego wpływu (wygląda niemal tak samo jak w innych SO pytania Pisałem wyżej . Ale jeśli mogę zrobić ręczną xdebug_break() wewnątrz kodu php to Handels go prawidłowo.

Wersja PHP jest 5.2.6 i Xdebug 2.1. Wszelkie sugestie, gdzie mogę spojrzeć dalej?

+0

Wydaje się podejrzane, że pojawia się w modułach PHP i Zend Modules, ale nie mam pojęcia, jak to się mogło stać. Czy wypróbowałeś "Dopasowane instrukcje instalacji" na http://xdebug.org/find-binary.php? – mjs

+0

Witam, przepraszam za spóźnioną reakcję w weekend i nie wracam do pracy przed środą. Ale wtedy spróbuję, dzięki. – enricog

+0

Cześć, właśnie wypróbowałem Dopasowane instrukcje instalacji, ale niczego nie zmieniłem. Właściwie to myślę, że to prawie to samo, co robi pecl install. Powiedział mi również "Już korzystasz z najnowszej wersji Xdebug". – enricog

Odpowiedz

10

to wygląda jak re coś jest nie tak ze ścieżką do pliku zawierającego punkt przerwania.

<- breakpoint_set -i 452 -t line -s enabled 
    -f file:///http:/development.xxx.de/users/itsame/index.php -n 15 -> 

Miałem podobny problem z Eclipse. Tylko moje punkty przerwania w pliku indeksu zostały zaakceptowane, a punkty przerwania w innych plikach - które zostały uwzględnione w indeksie - zostały zignorowane.

Spojrzałem w pliku remote_log i zobaczył, co następuje:

<- breakpoint_set -i 260 -t line 
    -f file:///~jeroen/workspace/fieg/wp-content/plugins/fieg/fieg.php -n 22-> 
<response xmlns="urn:debugger_protocol_v1" 
    xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" 
    transaction_id="260" id="48060002"></response> 

zauważyłem, że droga do przerwania wszystko było złe. Okazało się, że muszę skonfigurować Port Mapping w Eclipse. Po ustawieniu poprawnego mapowania zaczęły działać punkty przerwania.Również moja remote_log pokazuje teraz poprawną ścieżkę:

<- breakpoint_set -i 333 -t line 
    -f file:///Users/jeroen/Workspace/fieg/wp-content/plugins/fieg/fieg.php -n 12->  
<response xmlns="urn:debugger_protocol_v1" 
    xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" 
    transaction_id="333" id="48080005"></response> 

Nie jestem pewien, czy istnieje odpowiednik konfiguracji Eclipse mapowanie portów w NetBeans, ale mam nadzieję, że zauważył cię w dobrym kierunku.

+1

Dzięki! To naprawdę wskazało mi właściwy kierunek. Problem polegał na mapowaniu ścieżek. Wygląda na to, że musisz zmapować wszystkie potrzebne foldery, nie tylko foldery nadrzędne, zobacz także: http://wiki.netbeans.org/HowToConfigureXDebug#Tips_from_the_NetBeans_Forums – enricog

+0

Trudno było przetestować mapowanie dla wszystkich folderów teraz, Netbeans wydaje się Mam błąd, więc obecnie nie mogę dodać/edytować ścieżki serwera. Wygląda na to, że będzie to przydatne, jeśli ktoś inny przejdzie przez ten problem. Dla mnie teraz dziwnie działa również bez żadnego mapowania. Dlatego bardzo dziękuję za wskazanie mnie we właściwym kierunku;) – enricog

+0

Dzięki! Chociaż natknąłem się na "mapowanie portów". Powinien być "mapowaniem ścieżek", prawda? –

2

Przejdź do: Project > Properties > Run Configuration > Advanced (button)

Usuń wszystkie mapowania z „Kartografia Path”, jeśli nie używasz Xdebug dla zdalnego debugowania. Pomoże to rozwiązać ten problem.

3

W pliku php.ini ustaw niniejszej dyrektywy:

report_zend_debug = 1 

Mam nadzieję, że to pomoże ktoś?

2

Pytanie wspomniało, że plik xdebug.ini istnieje, ale nie zgłasza jego zawartości. tylko plik mojego domyślnej instalacji obejmowały:

zend_extension=/usr/lib/php5/20100525/xdebug.so 

Ale w celu debugowania rzeczywiście stało, musi być włączony. Dodaj tę linię:

xdebug.remote_enable=1 

Następnie phpinfo() zgłosi funkcjonującego Xdebug:

enter image description here

+0

+1 dla obrazu (ponownie uświadomiłem sobie, że ostatnio ponownie zainstalowałem WAMP i zapomniałem zmienić to jeszcze raz) Jeśli używasz WAMP, wejdź do swojego php.ini z ikony WAMP i zmień linię na "xdebug.remote_enable = on "(z" off ") – BillyNair

3

Dla mnie problem był "Projekt Właściwości> Źródło> Web root:" nie został ustawiony (to miał default "jako wartość).

Po ustawieniu go na mój korzeń internetowych na dysku, punkty przerwania rozpoczął pracę.

+0

Mówiłem o ustawieniach projektu w Netbeans 8.0 – drstockz

1

Natknąłem się na ten post, próbując rozwiązać mój problem xdebug w Eclipse, nie łamiąc się w punktach przerwania dla aplikacji internetowej. Uważam, że komentarze tutaj są bardzo przydatne. Również ten post http://www.devside.net/wamp-server/netbeans-waiting-for-connection-netbeans-xdebug-issue przydał mi się bardzo przydatny do rozwiązania mojego problemu. Właśnie musiałem ustawić następującą flagę w moim odpowiednim pliku php.ini.

xdebug.remote_enable = 1

xdebug będzie ciągle czekać na sesji, ale po ustawieniu flagi zdalne debugowanie sesji oczekiwania problem, łamiąc punkt problemu, jak również plik dziennika xdebug że ja również zdefiniowany rozpoczęła zalogowaniu transakcji.

0

Jeszcze innym możliwym rozwiązaniem, jedynym, który pracował dla mnie, po wypróbowaniu wszystkiego w tym poście iw wielu innych ...

Jestem debugowania projektu PHP przez Xdebug na Eclipse Neon na Windows. Źródłem jest zdalny Linux, zamontowany lokalnie jako dysk przez SFTP. Prawdopodobnie to moja wina, że ​​to nie jest poprawnie skonfigurowane ...

W Eclipse kliknij projekt prawym przyciskiem myszy, a następnie wybierz Configure, a następnie Add PHP Support. Natychmiast rozpoczęto indeksowanie DLTK; przed tym nie zacząłby się bez względu na wszystko.

Następnie musiałem otworzyć moje źródło i ustawić punkty przerwania za pomocą Remote File Explorer. Mam nadzieję, że to pomoże komuś.

0

Miałem ten sam problem: punkty przerwania Eclipse nie działały, xdebug_break() działało.Moim problemem były spacje na ścieżce:

<- breakpoint_set -i 1323 -t line -f file:///Users/admin/Documents/projects/something/path%2520with%2520space/web/index.php -n 223 
-> 
<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1323" id="385680235"></response> 

Po zmianie ścieżki na coś bez przestrzeni punkty przerwania w Eclipse działały poprawnie.