Phpstorm e Xdebug + Profiling
Come al solito due brevi appunti in questo caso su come Debuggare i progetti con Phpstorm + Xdebug attivando anche il profiling tramite i file cachegrid.
Diamo per scontato che Xdebug sia installato sulla vostra macchina di sviluppo in base al sistema operativo che avete. Oltre ad essere installato Xdebug deve essere correttamente abilitato tramite php.ini. Di seguito un esempio di configurazione presa dal file php.ini:
zend_extension = /usr/lib/php5/20131226/xdebug.so xdebug.remote_enable = On xdebug.remote_host = "localhost" xdebug.remote_port=9000 xdebug.remote_handler=dbgp xdebug.max_nesting_level=5000
Aggiunte queste righe riavviate il vostro webserver. A questo punto su Phpstorm c’è ben poco da fare. Supponiamo che volete fare debug di un’API REST tramite postman, appendete all’url il seguente parametro nella query string
?XDEBUG_SESSION_START=PHPSTORM
In Phpstorm abilitare il debug tramite il bottone “Start Listening for PHP Debug Connections”. (immagine prese da jetbrains)
Da rosso diventerà verde
A questo punto Phpstorm è in ascolto, mettete qualche breakpint nel vostro codice e lanciate l’applicazione da Postman (con la chiave nella query string)
Phpstorm si accorgerà della chiamata
E mostrerà le tab per il debug
Potete anche abilitare il profiling aggiungendo al vostro php.ini le seguenti righe:
xdebug.profiler_output_dir=/tmp xdebug.profiler_enable = 1 xdebug.profiler_output_name = cachegrind.out.%t.%p
In un sistema Unix, dopo aver lanciato il debug sarà creato un file cachegrind.out.{format} nella cartella /tmp. Potete aprire questi file con programmi tipo kcachegrind se usate kde oppure con phpstorm tramite Tool -> Analyze Xdebug Profiler Snapshot per vedere tutte le informazioni catturate dal profiler. (Immagini prese da jetbrains)
Vedi anche come debugguare programmi eseguiti da linea di comando
Marc - 29 Giugno 2017 at 9:53 -
Grazie, davvero molto utile e chiaro