Da qualche tempo mi sto occupando dello sviluppo di un semplice ODBMS in PHP da utilizzare per la persistenza degli oggetti in un Application Server. Mai come in questa situazione mi sono accorto di quanto sia fondamentale l'utilizzo di strumenti che facilitino il rilevamento di errori concettuali all'interno del codice.
In PHP abbiamo a disposizione qualche funzione nativa per gestire il debugging di semplici script o siti internet, come l'error_reporiting, funzioni di logging, l'introspezione e qualche strumento di back-tracking delle chiamate. Purtroppo questi strumenti non bastano in applicazione più complesse ma fortunatamente possiamo sfruttare i debugger per facilitarci la vita. Un debugger è un programma (spesso una versione modificata di un compilatore/interprete oppure una libreria esterna scritta in codice nativo) che ci permette di eseguire il nostro codice passo passo, decidendo quando interrompere l'esecuzione per visualizzare lo stato corrente della nostra applicazione. Grazie a funzionalità di introspezione possiamo conoscere il contenuto dello scope corrente ed il valore di oggetti anche molto complessi.
Spesso i linguaggi di programmazione forniscono un debugger nella loro distribuzione standard. PHP, a causa di alcune scelte progettuali, non fornisce questo strumento. Qualche volenteroso ha comunque deciso di rilasciare strumenti di debug per PHP. Personalmente utilizzo il debugger integrato in Zend Studio, ma possiamo trovare valide alternative nel panorama opensource. APD è un'estensione PECL che permette l'utilizzo di nuove funzioni in PHP per l'analisi ed i profiling dei nostri programmi. DBG è invece un debugger nativo molto utilizzato da IDE commerciali ed opensource grazie alla sua versatilità e completezza. Fino a qualche tempo fa utilizzavo l'estensione Xdebug, che è anch'essa ricca di funzionalità interessanti. Tutti questi strumenti necessitano di essere installati sul server sul quale il nostro programma è in esecuzione. Una valida ed interessante alternativa agli strumenti che vi ho elencato è Gubed, che spicca soprattutto per la particolare struttura che il programmatore ha deciso di seguire. Gubed infatti modifica il vostro codice PHP inserendo chiamate a funzione che vengono sfruttate per interrompere l'esecuzione e recuperare informazioni sul programma. Semplice ed efficace.