Depuración con PhpStorm

Cree una base sólida para profundizar en el mundo con matices de la depuración en PhpStorm. En este episodio, aprenderá a iniciar una sesión de depuración, establecer puntos de interrupción y pasar por encima o por dentro del código utilizando Xdebug.

Transcripción

Una de las funcionalidades más potentes de PhpStorm es su depurador. El nombre «depurador» se remonta a la década de 1940 y significa «algo que depura errores o fallos de un programa». Un depurador le permitirá pausar su código mientras lo ejecuta, con el fin de que pueda inspeccionar la memoria del programa, seguir el recorrido que toma el código y mucho más. El objetivo de un depurador es facilitar la tarea de averiguar dónde ha fallado algo y subsanar los errores de su código.

PhpStorm incorpora un depurador ligero pero, con diferencia, el depurador más popular para PHP es Xdebug, que tendrá que instalar por separado. Afortunadamente, sin embargo, PhpStorm lo instalará por usted. Así que, echemos un vistazo a cómo configurar Xdebug con PhpStorm y cómo empezar con la depuración.

Supongamos que no tiene instalado Xdebug. ¿Qué ocurre cuando empieza a depurar un script PHP? Por ejemplo, una prueba. En lugar de ejecutar la prueba normalmente, puede pulsar el botón Debug. Como ve, PhpStorm nos avisa de que no hay un depurador instalado, pero también puede solucionar este problema. Solo tiene que pulsar Update Interpreter Info, a continuación, Download and install Xdebug extension, y darle un momento al IDE para que configure Xdebug por usted.

Cuando haya terminado, PhpStorm volverá a ejecutar su prueba de forma automática con el depurador activado, pero verá que no sucede mucho. Eso es porque todavía no le hemos dicho al depurador que haga una pausa en ningún sitio. Para ello, necesitaremos utilizar algo llamado «puntos de interrupción».

Un punto de interrupción es un lugar en su código donde el depurador detendrá la ejecución durante un momento para que pueda inspeccionar lo que está sucediendo.

Por ejemplo, añadamos un punto de interrupción en esta línea de aquí. Solo tiene que hacer clic en el número de línea en el medianil Ahora, volvamos a ejecutar nuestra prueba.

Esta vez notará que han cambiado algunas cosas. El programa está en pausa y PhpStorm muestra mucha información.

A la izquierda, se ve todo lo que ha ocurrido antes de llegar a este punto de interrupción. Hemos llegado hasta aquí a través de estas llamadas a métodos. Puede hacer clic en ellas y PhpStorm le mostrará la ruta a través de los archivos.

A la derecha, verá todas las variables disponibles actualmente en el punto de interrupción. Hay una variable $this que hace referencia a la clase de prueba; puede abrirla y ver qué contiene. Además, existen otras variables como la variable global $_ENV, por ejemplo. PhpStorm le mostrará su contenido, y podrá ver cómo cambia la lista de variables cada vez que pasamos a una de las llamadas a métodos anteriores.

El depurador se desplaza ahora hacia atrás en el flujo de nuestro programa, lo que puede resultar muy útil si necesita saber las cosas que ocurrieron antes de que ocurriera otra cosa. Pero ¿y para seguir adelante?

Puede desactivar la pausa del depurador pulsando el botón Resume, pero entonces la prueba acabará sin más.

Así pues, volvamos a nuestro punto de interrupción y, en lugar de pulsar Resume, podemos pulsar los botones Step over o Step into, que son muy potentes.

«Step over» (pasar por encima) significa que el depurador pasará a la siguiente instrucción y volverá a hacer una pausa. «Step into» (pasar por dentro) significa que el depurador entrará a un nivel más profundo y depurará lo que está ocurriendo dentro de una llamada a una función.

Ahora, estos dos botones juntos son superpotentes. Esencialmente, puede navegar por el flujo de su programa con ellos, mientras vigila cómo cambian las variables, por qué las condiciones coinciden o no, cuántas veces se repite algo en bucle y mucho más.

Pero la depuración no solo es poderosa; también es intimidante. Pasan muchas cosas y es difícil dar ejemplos sin contexto que tengan sentido. También es algo que requiere práctica para sentirse cómodo, igual que tocar un instrumento, por ejemplo.

Así que esto es lo que vamos a hacer. Le he mostrado los aspectos básicos para empezar a utilizar el depurador: cómo iniciar una sesión de depuración, los puntos de interrupción y las opciones Step over y Step into.Tiene que acostumbrarse a todo esto, y la única forma de hacerlo es practicando. La próxima vez que escriba una instrucción var_dump o dd, intente utilizar el depurador en su lugar; le costará la primera vez, pero con el tiempo le resultará más fácil y a la larga le compensará.