- Published on
Debuggear en PHP con Xdebug
- Authors
-
-
- Name
- Iván Portillo
- @portillo_dev
-
Xdebug es una extensión de PHP que proporciona la capacidad de depuración código y errores. Utiliza DBGp que es protocolo de depuración simple que se usa para comunicar el motor de depuración propio de php con un cliente, normalmente un IDE.
Siempre que he desarrollado en PHP, lo que más he echado en falta, es la posibilidad de debuggear el código como he podido realizar en Java en .NET. Es decir, poder ir agregando puntos de ruptura para ir siguiendo la ejecución del código, ver la la pila de ejecución, evaluar el contenido de las variables en tiempo real, etc. En definitiva, realizar depuraciones más optimas y avanzadas.
Hasta ahora para hacer ese mismo proceso de depuración en PHP, usaba funciones como var_dump(), print_r() o dd() para entornos Laravel.
Pero esto tiene sus limitaciones y en ocasiones se hace difícil poder detectar
fallos o errores.
Pero hace poco tiempo, el cielo se abrió y me descubrieron un complemento perfecto para mi trabajo diario como desarrollador. Ese complemento es, Xdebug.
¿Que es Xdebug?
Xdebug es una de las
herramientas más útiles en el desarrollo de software, ya que se trata de un
depurador o debugger. Xdebug permite trazar la ejecución de tu código e
inspeccionar la pila de instrucciones ejecutadas.
Además, se puede
utilizar XDebug junto con muchos IDEs para poder establecer breakpoints en el
código y así facilitar la depuración de las aplicaciones. Gracias al uso de
herramientas como PHPUnit y KCacheGrind, Xdebug también permite realizar
análisis de cobertura del código.
¿ Porque debuggear el código?
El debug sirve para optimizar el código además de para detectar posibles bugs de diversa gravedad. A base de pruebas es más fácil ir mejorando las funcionalidades, depurando el código para que este sea más eficiente y utilice de manera más eficaz los recursos del hardware.
¿Cómo instalarlo?
En esta entrada voy a configurar Visual Studio Code y XAMPP para trabajar en PHP. El proceso de configuración sería el siguiente:
Primeros configuramos el entorno de XAMPP
- Descargar Xdebug
para la versión especifica de PHP (PHP 8.0 (64-Bit) o PHP 8.1 (64-Bit))
- Mover el archivo dll
descargado a la ruta: C:\xampp\php\ext
- (Opcional) renombrar
el archivo dll descargado: php_xdebug.dll
- Ahora debes abrir el
fichero C:\xampp\php\php.ini con Notepad++ o el blog de notas
- Ir a la línea output buffering y deshabilitala: output_buffering = Off
- En el mismo archivo
php.ini, baja hasta encontrar la sección [XDebug] (de no existir créala), copia y pega estas líneas:
[XDebug]
zend_extension=C:\xampp\php\ext\php_xdebug.dll
xdebug.mode=debug
xdebug.client_host = 127.0.0.1
xdebug.client_port = 9003
xdebug.start_with_request=trigger
- Por último reiniciamos el servidor apache de XAMPP
Ahora vamos con la configuración en VSC.
- Ir al apartado de extensiones y descargar la extensión de Xdebug
Adicionalmente, para proyectos en los que quieras o necesites ejecutar test con covertura. Solo tendrías que cambiar la línea
xdebug.mode=debug
por xdebug.mode=coverage
y ejecutar el comando vendor/bin/phpunit --coverage-html reports/
Al correr los test con convertura, phpunit te genera un informe indicandote que partes de tú código están sin testear y que partes sí.