Debug en php | Adrenalina

Debug en php

Publicado Por | 20 mayo , 2014 | Desarrollo Web | No Comments
php-bug

Cuantas veces nos habrán aparecido, como una pesadilla recurrente, los errores en php. El debug en php es un proceso por el que todos pasamos para dejar nuestro código perfecto para su ejecución. Por eso es importante entender todo el proceso para no encallarnos indefenidamente en esta tarea, a veces, interminable.

Punto de partida

Activar el mostrado de errores es una buena idea si estamos en un entorno de producción, pero puede no ser así en aplicaciones en vivo, ya que el usuario también podrá ver dichos errores.

Para activar el mostrado de errores podemos hacerlo en el php.ini o en el head de tu código:

ini_set('display_errors', 'On');

Por defecto, PHP 5 no muestra los errores menores, que pueden ser interesantes para el debug. Para mostrar todos los errores podemos configurar el error_reporting con E_ALL. Así como también puede ser una buena idea, configurarlo con E_STRICT,  que nos avisará si no estamos siguiendo los estándars de código, por ejemplo nos generará un warning si usamos una función deprecated:

error_reporting(E_ALL | E_STRICT);

Tipos de error

En php nos encontraremos 4 tipos de errores, que es necesario entender para el debug de nuestro código.

Errores sintácticos

Los errores sintácticos generalmente son provocados por caracteres incorrectos, ya sea de más o de menos. Los más comunes de este tipo de errores son los puntos y coma olvidados al final de una acción, o los paréntesis no cerrados por haberse descontado. Estos errores se muestran de la siguiente manera:

Parse error: syntax error, unexpected T_ECHO in /web/app/code.php on line 18

Como regla general es buena idea mirar la linia anterior a la del error para encontrarlo. Ya que este tipo de errores saltan cuando el compilador se encuentra un caracter inesperado, y esto siempre ocurre a posteriori.

Alertas

Las alertas o warnings de php, no provocan el paro de la ejecución, sin embargo habitualmente son indicadores de un error que puede afectar al resto del código. Los más habituales són:

– “Headers already sent”, solucionado normalmente revisando los espacios en blanco que pueda haber al inicio de tu código.
– Un número incorrecto de parámetros en la llamada de una función
– Path incorrecto al incluir un archivo

Avisos

Los avisos tampoco paran la ejecución del código, pero pueden ser muy importantes para rastrear un bug especialmente escurridizo.  En códigos que funcionan perfectamente pueden aparecer muchos avisos al activar el error_reporting con E_ALL, esto es perfectamente normal, ya que como su nombre indica son avisos.

Notice: Undefined index: name in /web/app/code.php on line 33

En este ejemplo, el aviso indica un índice indefinido que implica que el array que estamos usando no contiene un “name”. Esto puede ser debido a que nos hemos olvidado de inicializar esa posición el array y darle un valor. Muy habitual cuando estamos extrayendo información de una base datos y poniéndola en un array, y nos olvidamos de algún campo.

Errores fatales

Los errores fatales, a pesar de parecer los más complejos habitualmente son los más sencillos de resolver, ya que tenemos una información bastante específica del problema. En un error fatal el problema surge del hecho que el compilador no dispone de lo que necesita para procesar la petición. El más común de los errores fatales es una clase o función no definida y el mensaje de error nos dirigirá a la raiz del problema, en cuyo caso deberemos revisar la visibilidad de las funciones o definir la función si no lo habíamos hecho.

Fatal error: Call to undefined function test_function() in /web/app/code.php on line 48

Usando var_dump()

var_dump() es una función de PHP que nos permite visualizar el contenido de una variable de forma estructurada. Esto es  particularmente de utilidad cuando estamos tratando con arrays y objetos, ya que, el var_dump() nos mostrara su contenido para que podamos detectar que está ocurriendo.

Un uso repetido de esta función en los puntos clave de nuestro código nos permitirá visualizar la evolución de una variable a lo largo de nuestro código, y un posterior análisis del resultado para aislar los focos de problema.

Ejemplo de var_dump():

array(4) { ["David"]=> int(23) ["Dani"]=> int(22) ["Juan"]=> int(15) ["Marcos"]=> int(18) }

El var_dump() de esta variable nos muestra que es un array con 4 indices, los valores de los indices son enteros en este caso.

El resultado del var_dump() puede llegar complicarse para arrays muy grandes, y especialmente con arrays que contienen otras matrices, pero el aporte de información nos puede ayudar enormemente.

Extensiones de utilidad para el debug

XDEBUG

Es una extension PHP altamente configurable para ayudar con el rastreo de los errores

FIREPHP

Es una libreria para add-on Firebug de firefox para ayudar con el desarrollo de Ajax. Que permite el registro en el log de firebug de la información de debug.

Espero haberos ayudado a reconocer y lidiar los errores más habituales que surgen cuando creamos código en php y con suerte ayudaros en el proceso de debugado.

Sobretodo, recordad siempre de desactivar els reporte de errores cuando vayais en vivo, no hay nada peor que los usuarios vean errores en el código.

Autor: Lluis Torns

Estudiamos y analizamos su negocio en profundidad, definimos objetivos y planteamos la estrategia de marketing más adecuada centrándonos en conseguir cada uno de los objetivos propuestos. Solicita Presupuesto Ahora

Uso de cookies

En este sitio web utilizamos cookies propias y de terceros para mejorar nuestros servicios, para que usted tenga la mejor experiencia de usuario y analizar su visita. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.