Published on

Debuggear en PHP con Xdebug

Authors

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

                    

- Una vez descargada e instalada la extensión, créate un pequeño fichero de ejemplo. En mi caso he creado un index.php y añade unos cuantos puntos de ruptura. 

                  

- Pulsa en el botón superior derecho con el símbolo del Debug PHP, y la magia comenzará a funcionar



Espero que esto te pueda ayudar para resolver algunos quebraderos de cabeza a la hora de hacer debugging en tu código.

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í.

Si te gustó está entrada y crees que puede ser de utilidad o interés,  comparte este artículo en tus redes sociales 😉 👍

1242