Uruchom XDebug w Netbeans na żądanie zewnętrzne

Używam Netbeans 6.7 i XDebug do debugowania strony PHP na moim komputerze, uruchamiając żądanie z NetBeans (Project->Debug). To działa dobrze i jest bardzo przydatne.

Moje pytanie brzmi: czy możliwe jest dołączenie debuggera do każdego żądania, które przychodzi, a nie tylko tych, które uruchamiam z Netbeans?

Ie, zamiast klikać "Debug", umieść Netbeans w trybie, w którym debugger jest uruchamiany i dołącza się do następnego żądania, które przychodzi.

Mam poczucie, że to może być głupie pytanie, ale jeśli to możliwe, byłoby świetnie.

Edit: trochę więcej informacji

Mój system (Ubuntu 9.04) jest skonfigurowany następująco:

Zawartość /etc/php5/conf.d/xdebug.ini

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

xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.idekey=netbeans-xdebug

Opcje debugowania PHP Netbeans są domyślne:

Debugger Port: 9000
Session ID: netbeans-xdebug
Stop at the First Line: ticked

Mój /etc/hosts Plik przekierowuje www.mywebsite.com na localhost

Jeśli kliknę przycisk debugowania w Netbeans, to Firefox zostanie uruchomiony z adresem http://www.mywebsite.com?XDEBUG_SESSION_START=netbeans-xdebug, a debugger działa jak oczekiwane.

Ale jeśli przejrzę do http://www.mywebsite.com?XDEBUG_SESSION_START=netbeans-xdebug, to nie uruchomi debuggera w Netbeans.

Próbowałem również ustawić xdebug.remote_host=www.mywebsite.com, ale to nie robi różnicy.

Również włączyłem xdebug.remote_log, i to pokazuje informacje dla Kiedy zaczynam z NetBeans, ale nic dla zewnętrznych żądań. Więc chyba XDebug w ogóle nie widzi zewnętrznych żądań.

Author: John Carter, 2009-10-07

4 answers

Przejdź do właściwości projektu > uruchom konfigurację > Zaawansowane > Debuguj adres URL i zaznacz nie otwieraj przeglądarki internetowej (*). do not Ustaw host pod debugger proxy. zapisz te ustawienia. w oknie projektu, na Twoim projekcie: Kliknij prawym przyciskiem myszy > debug (zaczyna nasłuchiwać połączeń debugowania). przeglądarka nie jest uruchomiona. wpisz http://www.mywebsite.com?XDEBUG_SESSION_START=netbeans-xdebug w przeglądarce. powinno się włamać do netbeans. przynajmniej tak się tu dzieje. :)

(*) możesz też ustawić mapowanie ścieżki - dla mnie działa bez

 44
Author: ax.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-09 16:15:09

Domyślnie xdebug nie będzie próbował połączyć się ze zdalnym hostem, gdy argument 'Xdebug_session_start' Cookie/URL nie został określony. Możesz włączyć xdebug jako "zawsze włączony", ustawiając xdebug.remote_autostart do 1 w php.ini.

Ponadto, trzeba by uruchomić debugger PHP w NetBeans, aby to zadziałało. Nie znalazłem jeszcze lepszego rozwiązania, ale możesz mieć debugger PHP nasłuchujący połączeń przychodzących, zaczynając debugować losowy plik (użyj CTRL + SHIFT + F5, aby rozpocząć debugowanie pliku), a następnie kontynuuj (naciskając F5) po zatrzymaniu się w punkcie przerwania. Debugger Netbeans powinien działać, dopóki go nie zatrzymasz.

Update: ze względu na to, że NetBeans sprawdza ID sesji (XDEBUG_SESSION_START), musisz również ustawić zmienną idekey. eg:

xdebug.remote_autostart = 1
xdebug.idekey = "netbeans-xdebug"
 18
Author: Pada,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-17 17:04:06

Miałem podobny problem (na NetBeans, Mac OSX), po aktualizacji PHP i kompilacji / instalacji xdebug. phpinfo pokazało Xdebug jako załadowany, ale nadal nie chciał się połączyć, a po wypróbowaniu wszystkiego wymienionego powyżej nadal nie odniósł sukcesu. Następnie próbowałem zmniejszyć liczbę parametrów ustawionych w moim PHP.plik ini z powrotem do wymaganego minimum. Wydawało mi się, że to rozwiąże problem.

; REMOVED (commented) the following
; xdebug.remote_log=/myfile.log
;xdebug.extended_info = off
;xdebug.auto_trace=1
;xdebug.trace_output_dir=/mydir/myphptracefile.txt
;xdebug.trace_output_name=php_trace.%c
;xdebug.collect_params=4

Zmieniłem również domyślną nazwę xdebug.idekey z netbeans - Xdebug do default, potem z powrotem jeszcze raz.

Po ponownym uruchomieniu Apache, xdebug zaczął działać ponownie: nie jestem pewien, co dokładnie to naprawiło, ale dobrym punktem wyjścia może być po prostu zacznij od minimalnej liczby ustawień Xdebug w Twoim php.plik ini, a następnie powoli dodawać więcej, jeśli ich potrzebujesz. podejrzewam, że mogło to mieć coś wspólnego z ustawieniami śledzenia, ale nie jestem pewien.

Podstawowe ustawienia, z których korzystałem, to:

xdebug.remote_enable=on
xdebug.remote_port=9000
xdebug.remote_host=localhost
xdebug.remote_handler=dbgp
xdebug.idekey=netbeans-xdebug

Dobrym pomysłem jest również skompilowanie debugclient (w źródle xdebug package) i sprawdź debugowanie w wierszu poleceń, ponieważ powie Ci to, czy xdebug może działać przynajmniej niezależnie od Twojego IDE.

 2
Author: Pete855217,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-18 09:56:42

Nie jestem pewien co do Netbeans, ale każde inne IDE, którego używałem, zawsze nasłuchuje połączenia debugującego. Możesz rozpocząć nową sesję debugowania z xdebug, dodając ciąg zapytania ?XDEBUG_SESSION_START=name do adresu url. Jeśli Netbeans nasłuchuje, powinno to rozpocząć nową sesję debugowania.

Zobacz http://xdebug.org/docs/remote#browser_session Po Więcej Szczegółów

 0
Author: timmow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-08 22:04:44