Depuración PHP: técnicas y herramientas profesionales

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: por qué la depuración es el superpoder del desarrollador

\n\n

Todo desarrollador PHP se ha topado al menos una vez con la pantalla blanca de la muerte, un inexplicable 500 Internal Server Error o una variable que «justo hace un momento funcionaba». En esos momentos dan ganas de tirar el portátil por la ventana. Pero en lugar de eso, convirtamos la depuración de código PHP en una rutina que no te haga temblar las rodillas.

\n\n

En este artículo analizaremos técnicas y herramientas que te ayudarán a encontrar bugs más rápido de lo que hierve una tetera. Desde el clásico var_dump() hasta la configuración avanzada de Xdebug, todo con ejemplos prácticos y casos reales. ¡Allá vamos!

\n\n

1. Depuración básica: de var_dump() a error_reporting

\n\n

1.1. var_dump() y print_r() — métodos clásicos pero efectivos

\n\n

La forma más sencilla de depurar código PHP es mostrar el contenido de una variable en pantalla. Sí, no es elegante, pero cuando necesitas entender rápidamente qué hay dentro de un array, var_dump() hace su trabajo al 100%.

\n\n
<?php\n$users = [\n    ['name' => 'Juan', 'age' => 25],\n    ['name' => 'María', 'age' => 30]\n];\n\n// var_dump muestra los tipos de datos y la estructura\nvar_dump($users);\n\n// print_r — una versión más compacta\necho '<pre>';\nprint_r($users);\necho '</pre>';\n?>
\n\n

Consejo: Usa <pre> alrededor de la salida para mantener el formato. Y nunca olvides eliminar estas líneas de depuración antes de subir a producción — o los usuarios verán tus «esqueletos en el armario».

\n\n

1.2. Activar la visualización de todos los errores

\n\n

La configuración estándar de PHP a menudo oculta los errores «bajo la alfombra». Para verlos, añade al inicio del script:

\n\n
<?php\n// Mostrar todos los errores, incluyendo notices y warnings\nerror_reporting(E_ALL);\nini_set('display_errors', 1);\n?>
\n\n

Esto es especialmente útil al depurar código PHP en un servidor local. Pero en producción, asegúrate de desactivar display_errors — ¡es un riesgo de seguridad!

\n\n

1.3. debug_backtrace() — ¿quién llamó a esta función?

\n\n

A veces una función se llama desde el lugar equivocado. El rastreo de la pila de llamadas ayuda a encontrar el origen:

\n\n
<?php\nfunction logError($message) {\n    $trace = debug_backtrace();\n    echo "Error en archivo: {$trace[0]['file']} en línea {$trace[0]['line']}<br>";\n    echo "Mensaje: $message";\n}\n\n// Ahora cualquier llamada a logError mostrará de dónde proviene\nlogError('Algo salió mal');\n?>
\n\n

2. Xdebug — la navaja suiza para depurar PHP

\n\n

2.1. Instalación y configuración de Xdebug

\n\n

Xdebug es una extensión de PHP que convierte la depuración en una nave espacial. Con ella puedes establecer puntos de interrupción, ver valores de variables en tiempo real e incluso perfilar el código.

\n\n

Instalación mediante pecl (para Linux/Mac):

\n
pecl install xdebug
\n\n

Para Windows, es más fácil descargar el .dll desde el sitio oficial y añadirlo en php.ini:

\n\n
zend_extension = /ruta/hacia/xdebug.so\nxdebug.mode = debug\nxdebug.start_with_request = yes
\n\n

2.2. Puntos de interrupción en el IDE

\n\n

Si usas PhpStorm o VS Code, configura la integración con Xdebug. Colocas un punto de interrupción (círculo rojo a la izquierda de la línea de código), inicias la depuración — y el código se detiene en esa línea. Ves todas las variables, puedes ejecutar pasos e incluso cambiar valores «sobre la marcha».

\n\n

Ejemplo: Buscas por qué el total del pedido se calcula incorrectamente. Colocas un punto de interrupción en la línea del cálculo, ejecutas la solicitud — y ves que $discount es null en lugar de un número. Problema encontrado en 10 segundos.

\n\n

2.3. Profiling con Xdebug

\n\n

¿Código lento? Activa el profiler:

\n
xdebug.mode = profile\nxdebug.output_dir = /tmp/profiles
\n\n

Después de ejecutar el script, obtendrás

Blogs

Book Recommendations