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ń.
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
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"
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.
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
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