XDebug použití u prezenterů

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Attanon
Člen | 25
+
0
-

Ahoj,

dnes jsem si nainstaloval na server Xdebug, zprovoznil jsem ho přez ssh tunel. V apachi běží, Phpstorm vidí připojení taky. Když si dám breakpoint na www/index.php tak mě to zastaví, a projede. Což je super.

Akorát vzniká problém u presenterů například. Tam mi to nechce zastavit. Máte s tím nějakou zkušenost, popřípadně radu jak to rozjet? či to nejde?

S Xdebugem jsem si začal hrát teprve dneska, tak jsem v tom celkem novej.

Děkuji za každou odpověd.

tweak
Člen | 9
+
0
-

ahoj,

nechce chytit? to je divné, když na index.php to jde, ne?
zkoušel jsi třeba startup()? :)

newPOPE
Člen | 648
+
+2
-

Moze to byt problem mappingu. Cesta na serveri je ina ako na lokalnej masine. Toto treba niekde namapovat. Myslim ze je to „Languages & Frameworks → Servers“ a nastavis to priamo v tom serveri.

artemevsin
Člen | 61
+
+1
-

Tak tak je to mappingem. S tím jsem se natrápil i na localu. A nastavuje se v Run->Edit configurations. Tam klikneš na ty tři tečky u Server a v otevřeném okně zaškrtneš Use path mappings.
Jinak dělá to kvůli routování, resp. všeobecně rewrite v .htaccess

Attanon
Člen | 25
+
0
-

artemevsin napsal(a):

Tak tak je to mappingem. S tím jsem se natrápil i na localu. A nastavuje se v Run->Edit configurations. Tam klikneš na ty tři tečky u Server a v otevřeném okně zaškrtneš Use path mappings.
Jinak dělá to kvůli routování, resp. všeobecně rewrite v .htaccess

Díky, už se mi to povedlo rozjet. Mapping jsem tam nějakej základní měl a předpokládal jsem, že když hodím mapping na složku app tak mi to bude fungovat. Nefungovalo. Pak jsem hodil ještě jeden řádek na složku Backend a rozjelo se mi to v pohodě.

Ještě jedna otázka. Vzhledem k tomu, že jsem rozjel Xdebug na serveru, tak mě to debuguje veškeré požadavky (například na phpmyadmina:)), dá se to nějak nastavit v Xdebugu, aby mě to debugovalo pouze jednu doménu?

artemevsin
Člen | 61
+
0
-

Tak jedna z možnosti je vypnout Run->Break at first line in PHP scripts a pak ti to bude odchytávat jen breakpointy, které sis nastavil.
Jinak to záleží na tom, jak debuguješ. Tady vývojář z JetBrains vysvětluje způsoby, jakými se spouští debugger. V tvém případě asi připadá v úvahu používat cookies. Vygeneruješ si zde záložky do prohlížeče a těmi pak spouštíš/zastavuješ debugger. A vzhledem k tomu, že se jedná o sušenku, tak je to vázané na jednu doménu.

Attanon
Člen | 25
+
0
-

artemevsin napsal(a):

Tak jedna z možnosti je vypnout Run->Break at first line in PHP scripts a pak ti to bude odchytávat jen breakpointy, které sis nastavil.
Jinak to záleží na tom, jak debuguješ. Tady vývojář z JetBrains vysvětluje způsoby, jakými se spouští debugger. V tvém případě asi připadá v úvahu používat cookies. Vygeneruješ si zde záložky do prohlížeče a těmi pak spouštíš/zastavuješ debugger. A vzhledem k tomu, že se jedná o sušenku, tak je to vázané na jednu doménu.

Možnost

Break at first line

jsem měl vyplou. Ale i tak, pokud se provedl nějaký HTTP request na jakoukoliv stránku tak se to buď seklo, nebo se mě přesměrovalo na PHPStormu.

Jinak díky za pomoc. Povedlo se mi to rozjet pomocí sušenek a rozšíření v chromu https://github.com/…r-for-chrome, které hází sušenku do prohlížeče když si to chci zapnout. Jsem velice rád, že jsem se do toho dneska pustil, neboť mě to usnadní docela dost práce, když projíždím nějaké části kodu, které nedávají smysl a potřebuji si je projít.

artemevsin
Člen | 61
+
0
-

Tak se ještě zkus podívat do php.ini v sekci xdebug je xdebug.remote_autostart, který spouští xdebug při každém requestu bez ohledu na to, jestli je v GET/POST/COOKIE nějaká „spouštěcí“ proměnná. Zkus ten autostart vypnout, mělo by to pomoct.

xdebug.remote_autostart
Type: boolean, Default value: 0
Normally you need to use a specific HTTP GET/POST variable to start remote debugging (see Remote Debugging). When this setting is set to 1, Xdebug will always attempt to start a remote debugging session and try to connect to a client, even if the GET/POST/COOKIE variable was not present.

Attanon
Člen | 25
+
0
-

artemevsin napsal(a):

Tak se ještě zkus podívat do php.ini v sekci xdebug je xdebug.remote_autostart, který spouští xdebug při každém requestu bez ohledu na to, jestli je v GET/POST/COOKIE nějaká „spouštěcí“ proměnná. Zkus ten autostart vypnout, mělo by to pomoct.

xdebug.remote_autostart
Type: boolean, Default value: 0
Normally you need to use a specific HTTP GET/POST variable to start remote debugging (see Remote Debugging). When this setting is set to 1, Xdebug will always attempt to start a remote debugging session and try to connect to a client, even if the GET/POST/COOKIE variable was not present.

Měl jsem zapnutý ten autostart, protože jsem to našel jako první variantu. Mě se pak nedařilo to moc rozjet na sušenky, ale nakonec se mi to podařilo a od té doby mám i autostart vypnutý.