Php debug en Visual Studio Code

Aprende a depurar PHP

Para depurar código PHP, necesitamos un debugger que automatice esa tarea sin tener que estar interpretando los scripts, ensuciando nuestro código con sentencias de salidas de texto y estar saliendo al navegador constantemente para ver los resultados de cada cambio. Además el depurador nos permitirá revisar el código por fragmentos a través de la creación de puntos de ruptura o breakpoints que están asociados a las líneas de código php. Por suerte PHP proporciona Xdebug una herramienta de depuración única, integrada y desarrollada por los creadores de este lenguaje de backend. Depurar php ahora es más sencillo, sigue los siguientes pasos para configurar y entender como realizarlo:

  1. Descarga e instalación de Xdebug
    1. Copiar información de nuestro phpinfo
    2. Pegar información en el Wizard de la página Xdebug
    3. Instrucciones generadas por Xdebug
    4. Errores en lugar de instrucciones
    5. Comprobar que Xdebug esta instalado
  2. PHP Debug en VSC
  3. Posibles errores
    1. Error de ruta de la extensión PHP Debug
      1. Opción 1
      2. Opción 2
    2. Error de ruta executablePath de otra extensión
  4. Como debuggear php en Visual Studio Code
    1. Puntos de interrupción
      1. 1-Agregando punto de interrupción en VSC
      2. 2-Iniciando el debugger
      3. 3-Ejecuta el código
    2. Mensajes de texto
    3. Debugging con VSC
      1. Herramientas de depuración de VSC
    4. Resumen depuración

Descarga e instalación de Xdebug

Averiguando la versión de Xdebug apta para la versión de PHP que tenemos instalado. Pasos:

Copiar información de nuestro phpinfo

Si tenemos instalado el XAMPP es muy sencillo, tan solo tenemos que abrir el navegador y escribiremos en la barra de direcciones localhost, y en el menú de la página que aparecerá pulsaremos la opción de PHPInfo.

Accediendo a localhost
Accediendo a localhost

Seleccionamos todo el contenido de la página web y después lo copiamos en el portapapeles con el atajo Ctrl + C

Copiando código en Phpinfo

Pegar información en el Wizard de la página Xdebug

Ahora nos vamos al Wizard de Xdebug, es decir el asistente de configuración de Xdebug. Para ello pondremos la siguiente dirección en nuestro navegador:

https://xdebug.org/wizard

y pegaremos el código copiado en el paso 2 en el siguiente campo:

Input del formulario del Wizard de Xdebug

Después pulsaremos en el botón que pone Analyse … que está debajo del campo donde has pegado el texto. Esta acción enviará y analizará el texto insertado y después nos dará instrucciones personalizadas de descarga e instalación.

botón del formulario del Wizard de Xdebug

Nota: lo que hace este Wizard es ayudar a encontrar qué archivo de versión de Xdebug tiene que descargar con tu configuración y versión de PHP. Pero también cómo configurar PHP para ejecutar Xdebug.

Instrucciones generadas por Xdebug

Pantalla con las instrucciones generadas por el formulario:

Instrucciones generadas tras la ejecución del formulario para el análisis del texto de phpinfo.

El primer paso es un enlace para descargarnos la librería Xdebug.

El segundo nos indica la ruta donde debemos colocarla y el nombre que tiene que tener. Si hay un archivo con el mismo nombre, simplemente renómbralo y así usas la librería dll que te has descargado que está más actualizada.

El tercer paso es abrir el archivo de configuración php.ini y añadir la línea de código que indica en la imagen. Añade las siguientes líneas al final del archivo php.ini:

xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_port = 9003
zend_extension = C:\xampp\php\ext\php_xdebug.dll

El cuarto paso es reiniciar Apache.

Errores en lugar de instrucciones

Es posible que en lugar de unas instrucciones la página de Xdebug nos arroje algún aviso de incompatibilidad:

Wizard de la página web de xdebug.

Entonces necesitaras previamente actualizar Xampp. Antes de proceder con la actualización haz primero un backup de tus archivos y proyectos (situados en htdocs) y también las bases de datos si has creado alguna. Después renombra la carpeta xampp a por ejemplo, xampp-antiguo. Ahora instala la nueva versión de Xampp en la misma ubicación (en mi caso c:/xampp) donde instalaste la versión anterior para que funcione adecuadamente y sin conflictos.

Comprobar que Xdebug esta instalado

Comprobaremos que Xdebug está instalado y configurado adecuadamente. Para ello recarga la página de phpinfo, tal y como hicimos en el paso 1. Ahora debería aparecer una nueva línea de texto en la zona de ZendEngine:

Comprobando sección zendengine en PHPINFO para hacer Php debug.

PHP Debug en VSC

Si no tenemos instalado el editor Visual Studio Code, lo puedes descargar para Windows, Mac o Linux desde el siguiente enlace: Descargar Visual Studio Code

Lo primero que debemos hacer es abrir Visual Studio Code e instalar la extensión PHP Debug.

Php Debug

Y después aconsejo instalar la extensión PHP Extension Pack del mismo autor:

Php Debug y Php Extension Pack

Ahora ya estamos listos para depurar un proyecto. Abriremos nuestro proyecto (Archivo >Abrir Carpeta). Después pulsaremos en el icono de depuración, después en el botón Ejecutar y depurar. Aparecerá una casilla para seleccionar el lenguaje que deseemos depurar en nuestro caso pulsaremos PHP o lo escribiremos. Si no aparece PHP es porque no tenemos ningún archivo con extensión php abierto y por tanto no puede depurar nada.

Selecciona el lenguaje que vas a depurar, en esta caso PHP

Posibles errores

Error de ruta de la extensión PHP Debug

Error de ruta de php propio de la extensión PHP Debug

Para solucionar este error debemos copiar la ruta donde esta instalado php en nuestro servidor local. Y después añadirla a una una variables de entorno de ruta. Tenemos 2 opciones, veamos como hacerlo:

Opción 1

Vamos al explorador de Windows y hacemos clic derecho sobre Mi PC y después en propiedades. Nos aparece la siguiente ventana pulsamos en Configuración avanzada del sistema y aparece otra ventana donde pulsaremos en Variables de entorno:

Acceso a configuración de variables de entorno mediante Configuración avanzada del sistema.

Opción 2

Otra opción más rápida es ir al buscador de Windows y al escribir variables, nos aparecen en los resultados 2 opciones y elegimos Editar las variables de entorno de esta cuenta:

Accediendo a la configuración de variables de entorno de la cuenta.

Nos aparece la siguiente ventana Después hacemos doble clic en Path:

Seleccionado variable de usuario tipo Path

Ahora en la siguiente ventana creamos una nueva variable pulsando en Nuevo:

Creando una nueva variable de entorno tipo Path

Y le ponemos el siguiente nombre: C:\xampp\php

Después pulsamos en aceptar y listo ya tenemos solucionado el error de ruta.

Error de ruta executablePath de otra extensión

Si aparece error de ruta de alguna extensión de php lo podemos solucionar de la siguiente manera:

Error executablePath

Añadiremos las 2 últimas líneas al archivo de configuración:

{"workbench.colorTheme": "Default Dark+", "security.workspace.trust.untrustedFiles": "open", "window.zoomLevel": 0, "php.validate.executablePath": "C:\\xampp\\php\\php.exe", "php.executablePath": "C:\\xampp\\php\\php.exe"}

Como debuggear php en Visual Studio Code

Para debuggear o depurar php en VSC debemos abrir el menú Ejecución y depuración. Para que se despliegue clica en el cuarto icono (es un play con un bug) de la barra de herramientas de la izquierda:

Icono de ejecución y depuración

Puntos de interrupción

Para una depuración correcta haremos uso de la característica de los puntos de interrupción (breakpoints). Un punto de interrupción le dice al IDE, en este caso VSC, que debe detener la ejecución del código para para que así podamos revisar la ejecución del código por partes.

1-Agregando punto de interrupción en VSC

Abrimos un archivo .php con código. Nos situamos en el margen izquierdo del archivo php justo antes de la numeración de la línea, haremos clic para añadir un punto de interrupción en esa línea. Al hacerlo aparece un punto rojo que indica que esa línea tiene un punto de interrupción. Tras añadir todos los puntos de interrupción en las líneas oportunas ya podemos testear el bloque de código que va de punto de interrupción a punto de interrupción, pero primero tendremos que iniciar el debugger.

2-Iniciando el debugger

Después iniciaremos la depuración pulsando a la izquierda en el play de color verde que dice Listen for Xdebug. Si se ha iniciado correctamente notaremos que la barra inferior de VSC cambia de color azul a naranja.

3-Ejecuta el código

Ahora ves a un navegador web y carga la página que ejecuta el archivo que tienes abierto en VSC para así iniciar la ejecución y poder depurar. Por ejemplo en mi caso que tengo alojado el index.php dentro de una carpeta que se llama depuracionphp pongo: http://localhost/depuracionphp/. Interpretado nuestro código ahora ya podemos volver a VSC el cual controla la ejecución de todas las líneas de código y podremos depurar secuencialmente pasando por cada punto de interrupción definido por nosotros.

Mensajes de texto

Puedes cambiar los puntos de ruptura por mensajes. Es la manera más profesional de lanzar echos. Pare ello edita los puntos de ruptura y cámbialos por mensajes de texto así: Clic derecho / Editar punto de registro Ahora ejecuta el programa y trázalo con VSC. Recorre los puntos de ruptura y mira la consola de depuración para ver si imprime las cadenas de texto asociadas

Debugging con VSC

Si aparece un play amarillo alrededor del punto de ruptura, indica donde estamos que la ejecución ha llegado hasta ese punto, es como un puntero que lo vamos moviendo. Para pasar al segundo punto de interrupción, si hemos definido otros pulsaremos F5 o también utilizaremos las herramientas de depuración que aparecen en la barra de depuración en la parte superior derecha y que nos permiten hacer lo mismo pulsando en el icono correspondiente y que tiene otras opciones más:

Herramientas de depuración de VSC

herramientas de debug en VSC

Descripción de herramientas de depuración de izquierda a derecha:

  1. Inicia la depuración / Continuar (pulsándolo cada vez va saltando la ejecución al siguiente punto rojo) / Pausar (F5)
  2. Depurar paso a paso por procedimientos (F10): va instrucción a instrucción y si esta es una llamada a una función la ejecuta completamente.
  3. Depurar paso a paso por instrucciones (F11)
  4. Salir de la depuración
  5. Reiniciar
  6. Detener

Resumen depuración

  1. Arrancamos el servidor amp (Xampp, Wampp, …).
  2. Abrimos un fichero .php con VSC.
  3. En VSC añadimos breakpoints (puntos de interrupción) a la izquierda de los números de línea de nuestro fichero php. Se marcaran con circulos rojos.
  4. Iniciamos el debug del menu.
  5. Cuando la ejecución llegue al breakpoint se detendrá en esa línea.
  6. Después con las herramientas de depuración analizamos el resto del código, como por ejemplo ir al siguiente breakpoint.