Devel: il Debug sotto Drupal

Scrivere applicazioni web con Drupal è ormai una realtà ed il CMF guadagna ogni giorno piu consensi sia tra gli sviluppatori, che tra gli utilizzatori.
Drupal come framework di sviluppo tende a nascondere bene cosa avviene al suo interno ed è quindi molto importante conoscere il modulo devel (un modulo non core) che è pensato per gli sviluppatori ed i themer che lavorano con Drupal.
Questa guida è pensata come una panoramica alle funzioni di debugging di Devel che rendono piu agevole lo sviluppo delle nostre applicazioni.

Il modulo Devel

Il modulo devel è cosi composto:

  • Devel

    Questo è il modulo principale oltre a contenere tutte le funzioni di debug che vedremo sotto è la libreria base per i moduli gregari.
    Se configurato opportunamente questo modulo rende disponibile la lista delle query impiegate nella creazione della pagina ed i relativi tempi di esecuzione. Il modulo ci comunica inoltre l'ammontare di memoria RAM impegata ed il tempo di generazione dell'intera pagina.

  • Devel generate

    Questo modulo serve per generare contenuti in maniera automatica, nativamente supporta la creazione di nodi, commenti, voci di tassionomia e utenti. La generazione casuale di contenuti è molto utile per predisporre piattaforme popolose per i test di performance.

  • Devel node access

    Questo modulo aggiunge dei tab e dei blocchi che contengono informazzioni utili al debug dell'acesso ai nodi. Il suo utilizzo tipico è nello sviluppo di moduli di acesso ai contenuti come taxonomy access o nella creazione di nodi custom con politiche di accesso esotiche.

  • Performance Logging

    Questo componente raccoglie le statistiche sul tempo di esecuzione e sull'utilizzo di ram del sito per proporcelo in semplici report.

  • Theme developer

    Il componente è essenziale per chi sviluppa sui temi di drupal perchè indentifica il file responsabile del render di ogni singolo componente della pagina. L'interfaccia di introspezione è un comodo componente javascipt.

Le funzioni

dpm($input, $name = NULL)

La funzione stampa il dump della variabile con var_dump nello spazio dei messaggi di drupal. La visualizzazione tramite Krumo agevola le lettura grazie ad una moderna interfaccia Java Sript non intrusiva.
Il secondo parametro è opzionale e serve a distingure piu esecuzioni successive della funzione.
La funzione ha un alias come dsm() ma gli sviluppatori pensano che dpm sia meglio.

dvm($input, $name = NULL)


La funzione stampa il dump della variabile con var_dump nello spazio dei messaggi di drupal. La visualizzazione è testuale Il secondo parametro è opzionale e serve a distingure piu esecuzioni successive della funzione.

dpr($input, $return = FALSE, $name = NULL)


La funzione stampa il dump con la funzione php print_r e mette l'output nella pagina, è utile se il tuo tema non stampa a video i messaggi.
Il secondo parametro è utile se si vuole catturare il messaggio invece di mandarlo direttamente in stampa.
Il terzo parametro è opzionale e serve a distingure piu esecuzioni successive della funzione.
La funzione stampa output solo se l'utente ha i privilegi necessari, quindi è possibile utilizzarla anche in ambienti in produzione (con le dovute cautele).

dvr($input, $return = FALSE, $name = NULL)


La funzione stampa il dump con la funzione php var_dump e mette l'output nella pagina, è utile se il tuo tema non stampa a video i messaggi.
Il secondo parametro è utile se si vuole catturare il messaggio invece di mandarlo direttamente in stampa.
Il terzo parametro è opzionale e serve a distingure piu esecuzioni successive della funzione.

kpr($input, $return = FALSE, $name = NULL)


La funzione ha le stesse caratteristiche di dvr ma l'output è formattato con Krumo.
La funzione è un alias di kprint_r() che viene definita dagli sviluppatori una funzione contro il diffondersi del tunnel carpale.

dargs()


La funzione ritorna il var_dump dei parametri passati alla funzione di interesse, detto in latre parole serve a capire cosa drupal passa alla funzione in esame.

dd()

La funzione è una alias di drupal_debug() e serve per loggare tutti i cambiamenti di stato di una variable in un file chiamato drupal_debug.txt posto nella directory temp del sito.

ddebug_backtrace()


La funzione ritorna lo stack delle funzioni richiemate.

db_queryd()


La funzione stampa nell'header della pagina la query passata con i relativi parametri completati e mostra l'errore sql ritornato dal server.

RedFox (non verificato) Ven, 03/12/2010 - 09:16

Finalmente un howto che spiega come fare il debug in maniera sensata .... Uccio sei sempre il migliore :D

psicomante (non verificato) Gio, 04/15/2010 - 12:06


La funzione è un alias di kprint_r() che viene definita dagli sviluppatori una funzione contro il diffondersi del tunnel carpale.

Ahah, stavo morendo dal ridere quando ho letto il commento sopra kpr :)

Ottima guida uccio ;)