Cómo depurar código PHP paso a paso con Xdebug y PhpStorm en una configuración DDEV
¿Qué es la depuración?
Según Wikipedia: “En programación informática y desarrollo de software, la depuración es el proceso de encontrar y resolver errores (defectos o problemas que impiden el correcto funcionamiento) dentro de programas informáticos, software o sistemas.”
Según Internet: “Depurar es como ser el detective en una película de crímenes donde tú también eres el asesino.” – Filipe Fortes
¿Qué es DDEV?
DDEV es una herramienta de código abierto que permite configurar sitios locales rápidamente utilizando docker. Y, no necesitas saber mucho sobre docker para poder usarlo, solo necesitas tenerlo instalado. Una lista de comandos para poner en marcha DDEV y un proyecto de WordPress o Drupal está disponible en ttps://davidloor.com/2021/12/22/how-to-setup-a-wordpress-and-drupal-local-site-with-ddev/
¿Qué es Xdebug?
Xdebug, según el sitio web oficial, “es una extensión para PHP, y proporciona una gama de características para mejorar la experiencia de desarrollo en PHP”.
Una de las características que proporciona Xdebug es la depuración paso a paso, donde Xdebug interactúa con un IDE utilizando el protocolo DBGp. PhpStorm, Sublime, Netbeans, Visual Studio Code y otros IDEs conocidos lo soportan. Con la depuración paso a paso, los programadores pueden establecer puntos de interrupción en cualquier línea de un script PHP, donde quieran detener su ejecución para poder ver el estado y el comportamiento del programa en ese punto específico.
¿Por qué deberíamos preocuparnos por usar una herramienta como xDebug cuando tenemos funciones como error_log, print_r, var_dump y otras similares que todos hemos usado mucho? Porque xDebug te hará un programador y solucionador de errores mucho más rápido.
Supongamos que necesitas depurar un archivo php, donde estás casi seguro de que hay un error, basándote en los registros de errores del servidor, solo usando funciones como error_log, print_r. Necesitarás empezar a llamar a estas funciones, pasando las variables que quieres mostrar, y refrescar la página en el navegador para comprobar la salida, y si las variables no te dan la información que necesitas para solucionar el problema, necesitarás repetir el proceso con un conjunto diferente de variables hasta que obtengas la información que pueda ser útil para solucionar el error. Y, como sabemos, ese proceso consume mucho tiempo.
Para depurar el mismo error hipotético de arriba, en un script PHP, usando xdebug, necesitarás establecer el punto de interrupción en la(s) línea(s) donde quieras ver el estado del programa, y refrescar el navegador. Podrás ver todas las variables en el ámbito durante la solicitud, como puedes ver en la siguiente captura de pantalla, en solo una interacción.

Instalar y habilitar xDebug
- Xdebug ya está instalado cuando se usa DDEV.
- Para habilitar Xdebug en el proyecto DDEV, en la terminal, simplemente ejecuta ddev xdebug on
- deberías obtener Enabled xdebug como salida
Comenzar a escuchar conexiones de depuración de PHP en PhpStorm
- Abre tu proyecto PHP en PhpStorm
- En la esquina superior derecha de PhpStorm, encontrarás un pequeño botón de teléfono, haz clic en él para empezar a escuchar las conexiones de depuración de php.

- Abre tu sitio local en un navegador, y en PhpStorm se te pedirá que aceptes la conexión entrante de Xdebug, donde deberías hacer clic en Aceptar.

Reflexiones finales
Xdebug es solo otra herramienta que se puede utilizar para encontrar y resolver errores en código PHP. Puede ayudar a aumentar la productividad de un desarrollador PHP en muchos casos.
PhpStorm es también otra herramienta, que tiene grandes características para el desarrollo PHP. Empecé a usarlo hace 2 años después de escuchar todos los beneficios que proporcionaba a mis compañeros de trabajo. Durante más de 13 años, fui un gran fan de Apache Netbeans, que también funciona muy bien con Xdebug, pero se necesitaban algunos pasos adicionales para que funcionara completamente, y solía usar demasiados recursos de mi ordenador, lo que lo hacía súper lento.
Debemos recordar que, “Solo eres tan bueno como las herramientas que usas.”