Debug di script PHP con Xdebug, Notepad++ e il plugin DBGP

Per chi sviluppa attivamente applicazioni e script PHP il debug è certamente una fase importante dello sviluppo. Tra centinaia di linee di codice può non esser facile districarsi alla ricerca di qualche baco che si nasconde malefico. Vi voglio quindi oggi proporre un’interessante combinazione di strumenti che vi permetterà di avere un ambiente di sviluppo PHP più completo, che permetta un debug più efficace del classico var_dump piazzato qua e là.

xdebug-logo

Ecco cosa utilizzeremo:

  • Un web server locale con supporto a PHP 5.x ( i nostri test sono stati condotti con un’installazione di XAMPP 1.7.1 )
  • L’editor di testo Notepad++
  • Il plugin DBGP per lo stesso editor
  • L’estensione Xdebug per la vostra versione di PHP
  • L’estensione per Firefox Xdebug Helper ( opzionale )

Dopo aver approntato, se già non lo fosse, il vostro web server locale ed aver verificato che PHP funzioni correttamente ( questo va oltre lo scopo di questo post ma se lo state leggendo probabilmente il problema non si pone ) scaricate ed installate l’editor Notepad++ e il plugin DBGP. Per installare quest’ultimo dovete porre la DLL contenuta nell’archivio all’interno della sottocartella “plugins” di Notepad++.

Ora dobbiamo procurarci la versione di XDebug corretta a seconda della versione di PHP che abbiamo installato. Se non conoscete la vostra versione potete scoprirla tramite uno script PHP che chiami la funzione “phpinfo()” come unica istruzione:


Richiametelo nel vostro browser ed avrete la versione di PHP in bella vista. Nella pagina di download di Xdebug dovrete ora scegliere la versione dell’estensione corretta. Questa dipende sia dalla versione di PHP sia dal fatto che sia abilitata l’opzione ZTS ( Zend Thread Safety ), cosa che potete verificare sempre nella pagina phpinfo() alla voce “Thread Safety”. Una volta scaricata la DLL dovete riporla nella directory delle estensioni di PHP che si trova tipicamente in una sottocartella dal nome “ext” o “extensions” della distribuzione PHP; ad esempio in XAMPP ha il percorso “xampp/php/ext”. Rinominatela infine in “php_xdebug.dll” per semplicità. Aprite ora il vostro php.ini e aggiungete queste righe in fondo:

[XDebug]
zend_extension_ts="C:\xampp\php\ext\php_xdebug.dll"
xdebug.extended_info=1
xdebug.remote_enable=true
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.idekey=mydebugkey

Ovviamente il percorso all’estensione potrà essere diverso caso per caso. Una nota importante: se nella vostra distribuzione di PHP è attiva l’estensione Zend Optimizer, Xdebug non funzionerà correttamente. Per rimediare dovrete disabilitare questa estensione cercando nel file php.ini le righe ad essa corrispondenti e commentandole apponendo un punto e virgola all’inizio di ogni riga. In XAMPP ad esempio tale estensione è abilitata di default. Nel file php.ini si trovano queste righe che, come vedete, sono state commentate:

;zend_extension_manager.optimizer_ts = "C:\xampp\php\zendOptimizer\lib\Optimizer"
;zend_optimizer.enable_loader = 0
;zend_optimizer.optimization_level=15
;zend_optimizer.license_path =

A questo punto riavviate il vostro web server in modo che venga caricata la nuova configurazione e aggiornate la pagina phpinfo di prima. Dovreste vedere vicino al logo di Zend Engine un messaggio come questo:

Xdebug è stato caricato correttamente!

Xdebug è stato caricato correttamente!

Ora dobbiamo avviare Notepad++ e configurare il plugin. Dalla barra dei menù navigate in Plugins->DBGp->Config, apparirà una finestra come quella mostrata nell’immagine seguente. Dovete impostare le varie opzioni come nell’immagine.

Configurazione del plugin DBGp

Configurazione del plugin DBGp

Fate bene attenzione a spuntare la casella in alto a sinistra.

Per completare l’opera installate l’estensione di Firefox Xdebug Helper indicata precedentemente, la quale vi risparmierà una seccatura. Infatti per abilitare il debug di uno script dovete la prima volta richiamare lo script aggiungendo come parametro nella richiesta “XDEBUG_SESSION_START=session_name” dove session_name può essere una stringa qualsiasi. Dopo di che verrà automaticamente generato un cookie che manterrà aperta la sessione di debug per i test successivi. Con l’estensione Xdebug Helper questo non sarà più necessario perchè semplicemente cliccando su di un pulsante nella barra di stato del vostro browser potrete avviare o fermare il debug. L’estensione si preoccuperà infatti automaticamente di gestire il cookie di Xdebug.

xdebug-helper

Quando l'icona è colorata il debug è attivo

Non ci resta che fare una prova. Create in Notepad++ un file PHP e salvatelo nella “documents root” del vostro web server. Aprite poi il pannello di debugging in Notepad++ navigando nel menù Plugins->DBGp->Debugger. Da questo pannello potrete impostare dei “breakpoints” attraverso il pulsante con un pallino rosso; apparirà un pallino rosso a fianco della riga selezionata.

Piccolo script di test

Piccolo script di test

Richiamando lo script dal vostro browser ( con il debug attivato ovviamente! ) dovreste vedere l’icona di Notepad++ sulla barra delle applicazioni illuminarsi. Passando all’editor potrete visualizzare il valore delle variabili globali e locali dello script ed eseguire passo passo le istruzioni dello stesso tramite i pulsanti del pannello di debugging.

E questo è tutto anche per oggi! Alla prossima!

Articoli correlati:

  1. OpenWRT Backfire e JDownloader, un semplice script per la riconnessione
  2. Estendere Notepad++ con Javascript? Possibile grazie a Npp Scripting!
  3. Navigare tra le funzioni PHP con Notepad++? Si può fare, con un po’ di fantasia
  4. Snippet di codice con Notepad++ e il plugin QuickText
  5. Trovare le differenze tra due file di testo con Notepad++

Posted By Stefano Angaran

Leave a Reply




*
Get Adobe Flash playerPlugin by wpburn.com wordpress themes