Trazas de depuración en PHP

Dos de las funciones más útiles a la hora de depurar una aplicación PHP cuando no podemos o no queremos utilizar un depurador completo son debug_backtrace y debug_print_backtrace. Estas funciones permiten, como es de esperar por su nombre, generar la traza inversa de la ejecución del script. Esto es, determinar las funciones cuya ejecución ha provocado que el script llegue a esa línea de código, junto con los parámetros pasados a esas funciones. La diferencia entre ambas es que, mientras debug_print_backtrace imprime la traza en la salida estándar, debug_backtrace la guarda en un array.

Supongamos que tuvieramos el siguiente código, por ejemplo:

<?php
  function a($cadena, $repeticiones, $eliminar) {
    return b(str_repeat($cadena . ' ', $repeticiones), $eliminar);
  }
  
  function b($cadena, $eliminar) {
    return c(str_replace($eliminar, '', $cadena));
  }
  
  function c($cadena) {
    echo '<pre>';
    debug_print_backtrace();
    echo '</pre>';
    
    return ucwords($cadena);
  }
  
  
  $cadena = a('Hola', 3, 'H');

La llamada a debug_print_backtrace en la función c imprimiría algo parecido a lo siguiente:

#0 c(ola ola ola ) called at [ejemplo.php:7]
#1 b(Hola Hola Hola , H) called at [ejemplo.php:3]
#2 a(Hola, 3, H) called at [ejemplo.php:19]



Comentarios
  1. daniel

    Gracias, de verdad muy interesante, veo que nos devuelve un stack trace…

    Responder

  2. Anónimo

    Estoy estudiando topografía y en el primer curso tengo una asignatura sobre informática, estoy usando el Pascal a mas no poder.. y aunque se que esta entrada del blog es un mundo en comparación a lo que puedo saber de Pascal (no voy mas alla de simples algoritmos con matrices, vectores y subprogramas), me ha fascinado poder entenderla un poco.. la verdad esque informática ha sido mi asignatura preferida del año.

    Responder

Deja un comentario