Cómo debuggear una aplicación PHP sin usar var_dump

Una de las tareas que más tiempo consume durante el desarrollo de una aplicación (web o no) es el debugging. Ese momento en que estás seguro de que todo anda bien, pero por las dudas… hay que probarlo.

Y, como siempre, algo no sale exactamente como esperabas.

Es entonces cuando te toca arremangarte, buscar una nueva taza de café, silenciar el teléfono y hurgar.

El modo «común» de encarar esta tarea en el universo php es usar mucho la función var_dump (o sus parientes cercanos: print_r, echo, etc…).

La verdad es que, si bien eso puede funcionar, está bastante lejos de ser óptimo.

Herramientas de debugging PHP

Una herramienta que vengo usando hace bastante y que ha sido el día y la noche en mi trabajo es xdebug.

Se trata de un complemento para php que permite, entre otras cosas:

  • Ejecutar el código paso por paso
  • Evaluar el contenido de las variables en tiempo real
  • Establecer puntos de corte

Históricamente instalarlo (y dejarlo funcionando!) era una tarea sólo apta para valientes… hoy en día, por suerte, las cosas son mucho más simples.

Para usarlo de una forma cómoda y práctica necesitarás a su vez un IDE.

En este caso, te mostraré cómo se hace con PhpStorm pero realmente es muy similar en otros.

Cómo configurar PHPStorm para usar XDebug

Desde dentro del IDE podés lanzar tu aplicación usando el botón de play (El triángulo verde):

Lo que ves a la izquierda (En este caso app.php) es el nombre de la configuración de ejecución (Un concepto propio de PhpStorm que define un poco qué es lo que esperás que haga el IDE cuando hagas click en el botón).

Lo primero que tenés que conocer entonces es este cuadro de diálogo (Al que accedés al editar la configuración de debugging):

A la izquierda tenés todas las posibles configuraciones base (Debuggear una aplicación web, un script de CLI, etc…).

A la derecha los detalles particulares. Lo más importante es configurar correctamente el servidor:

Dentro de este cuadro tenés que mirar especialmente los campos:

  • Host: El servidor donde está desplegada tu aplicación (Si usás Xampp o algo así será localhost, si no puede ser la IP de la computadora donde esté tu código, dependerá de tu entorno particular el valor que debés ingresar).
  • Port: El puerto donde está escuchando el servidor web al que te vas a conectar (Por lo general será el 80)
  • Debugger: Qué software de debugging usarás (Los estándares son XDebug y Zend Debugger, si no usás ZendFramework te recomiendo usar el primero).

Qué son los path mappings

Por último, muy importante es configurar correctamente los mapeos de directorios. Este concepto puede solar un poco extraño al principio, pero es bastante claro: se trata de indicar dónde está, en el sistema de archivos local, el código que se está ejecutando en el servidor.

Para entenderlo un poco mejor: el código que estás viendo en tu IDE está guardado en tu disco local (salvo que estés editando directamente sobre el servidor, algo que, salvo que uses una máquina virtual sería muy mala idea).

El código que se ejecuta está en el webserver que tiene instalado el debugger.

Por eso, para poder ir corriendo paso-a-paso el IDE necesita conocer qué archivo debe mostrar en base a la comunicación con el debugger.

De eso precisamente es se tratan estos mapeos.

Una vez terminada esta configuración basta volver a la barra de arriba

Pero esta vez hacer click en el botón del «bichito» (Bug) y, si todo sale bien, verás una pantalla como esta en la parte de abajo de tu IDE:

Y ahora se trata sólo de colocar breakpoints en algunos lugares estratégicos del código (Simplemente haciendo click a la izquieda de la línea seleccionada):

 Y recargar la página para que, cuando llegue a este lugar de la ejecución se vea algo como:

En la parte del código la línea azul marca el código que está a punto de ejecutarse, pero la parte más interesante es la de abajo a la derecha, donde podés ver el contenido de las variables en tiempo real.

De esta forma podés debuggear tu código sin temer dejar olvidado algún var_dump por ahí.

¿Preferís una explicación en video? Acá hay algo que puede interesarte.

mchojrin

Docente y consultor PHP at Leeway Academy
Ayudo a desarrolladores PHP a acelerar su llegada a Sr.

Un pensamiento en “Cómo debuggear una aplicación PHP sin usar var_dump

¿Te quedó alguna duda? Publica aca tu pregunta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: