Soy consciente de la depuración básica, como el uso de Informe de errores. La depuración del punto de interrupción en PHPEclipse también es bastante útil.
¿Cuál es la mejor (en términos de forma rápida y fácil) para depurar en phpStorm o cualquier otro IDE?
¡Creo que esta es una gran pregunta! Cuando no sabe cómo abordar la depuración de PHP, ni siquiera sabe cómo formular su pregunta, no sabe cómo ser más preciso que esto. Por lo tanto, puede que no obedezca las reglas de Stack, ¡pero seguro que nos ayuda mucho a los principiantes!
Mihaela
1
desde php5.4 en adelante se introdujo un nuevo depurador de interfaz de línea de comando llamado phpdbg ( phpdbg.com ). PHP5.6 vendrá con phpdbg predeterminado.
Ganesh Patil
1
¿Has oído hablar de XDebug? :)
Pratik
Respuestas:
145
Pruebe Eclipse PDT para configurar un entorno Eclipse que tenga características de depuración como usted mencionó. La capacidad de ingresar al código es una forma mucho mejor de depurar que el método anterior de var_dump e imprimir en varios puntos para ver dónde falla su flujo. Sin embargo, cuando todo lo demás falla y todo lo que tengo es SSH y vim todavía var_dump()/ die()para encontrar dónde va el código hacia el sur.
Gracias. Eso me salvó el día. (Solo tuve que eliminar ese E_STRICT)
Sec
44
assert_callcackje
Madbreaks
32
Xdebug y el complemento DBGp para Notepad ++ para la búsqueda de errores de servicio pesado, FirePHP para cosas livianas. ¿Rápido y sucio? Nada supera a dBug .
El complemento DBGp no funciona con la versión actual de notepad ++ / xdebug y no hay planes para solucionarlo. Puedes ver mi discusión con el creador vinculado aquí
Joe
26
XDebug es esencial para el desarrollo. Lo instalo antes que cualquier otra extensión. Le da rastros de pila en cualquier error y puede habilitar la creación de perfiles fácilmente.
Para un vistazo rápido a una estructura de datos, use var_dump(). No lo use print_r()porque tendrá que rodearlo <pre>y solo imprime una variable a la vez.
<?php var_dump(__FILE__, __LINE__, $_REQUEST);?>
Para un entorno de depuración real, lo mejor que he encontrado es Komodo IDE, pero cuesta $$.
PhpEd es realmente bueno. Puede entrar / salir / salir de funciones. Puede ejecutar código ad-hoc, inspeccionar variables, cambiar variables. Es asombroso.
He usado PhpEd y no tengo palabras amables para él en comparación con un IDE real como NetBeans o Eclipse, ni este comentario agrega nada útil a la pregunta. -1
siliconrockstar
Probé la mayoría de los IDEs (incluidos Zend, NetBeans y Eclipse) antes de comprar PhpED Professional porque era el mejor por milla y media. Esto fue hace unos años, por lo que los otros pueden haber mejorado desde entonces, pero en ese momento la mayoría de ellos eran dolorosamente lentos porque estaban escritos en Java. No entiendo cómo alguien puede tener "palabras amables" cuando (para mí) fue claramente la mejor, la decisión fue obvia.
lm713
17
1) Yo uso print_r (). En TextMate, tengo un fragmento de 'pre' que se expande a esto:
echo "<pre>";
print_r();
echo "</pre>";
2) Uso Xdebug, pero no he podido hacer que la GUI funcione correctamente en mi Mac. Al menos imprime una versión legible del seguimiento de la pila.
Estoy seguro de que te refieres a echo "</pre>"; al final sin embargo.
altermativ
99
También puede pasar 'verdadero' a la función para que devuelva la cadena. Significa que puede hacer esto:echo '<pre>', print_r($var, true), '</pre>';
DisgruntledGoat
16
He usado Zend Studio (5.5) , junto con Zend Platform . Eso proporciona una depuración adecuada, puntos de interrupción / paso sobre el código, etc., aunque a un precio.
Honestamente, una combinación de print y print_r () para imprimir las variables. Sé que muchos prefieren usar otros métodos más avanzados, pero creo que este es el más fácil de usar.
Diré que no aprecié completamente esto hasta que hice algo de programación de microprocesador en Uni y no pude usar ni siquiera esto.
Me alegra que hayas mencionado tanto print como print_r, utilizo una impresión básica para ver si el código se ejecutó en cierto punto, lo que ayuda a aislar el problema.
Brad
Yo uso ambos print y var_dump (). Uso print para mostrar mensajes e información de depuración y var_dump para indicar el estado de las variables a medida que avanzan las cosas.
Joshua K
14
Xdebug , de Derick Rethans, es muy bueno. Lo usé hace algún tiempo y descubrí que no era tan fácil de instalar. Una vez que hayas terminado, no entenderás cómo te las arreglaste sin él :-)
No solo la instalación es frustrante. Configurar Xdebug para que funcione con Eclipse puede ser una pesadilla. Pude instalar Xdebug en CentOS 5 pero EclipsePDT + Xdebug no quiere cooperar :(
Jahangir
11
Yo uso Netbeans con XDebug. Echa un vistazo en su sitio web para obtener documentos sobre cómo configurarlo.
http://php.netbeans.org/
El complemento es esencial cuando depura proyectos MVC, porque la forma normal en que XDebug se ejecuta en Netbeans es registrar la sesión dbug a través de la URL. Con el complemento instalado en Firefox, configuraría las propiedades de su proyecto Netbeans -> Ejecutar configuración -> Avanzado y seleccionaría "No abrir el navegador web". Ahora puede configurar sus puntos de interrupción e iniciar la sesión de depuración con Ctrl-F5 como de costumbre. . Abra FireFox y haga clic con el botón derecho en el icono Complemento en la esquina inferior derecha para comenzar a monitorear los puntos de interrupción. Cuando el código llegue al punto de interrupción, se detendrá y podrá inspeccionar sus estados variables y la pila de llamadas.
El almacenamiento en búfer de salida es muy útil si no desea estropear su salida. Hago esto en una sola línea que puedo comentar / descomentar a voluntad
Para los problemas realmente difíciles que llevarían demasiado tiempo usar print_r / echo para descubrir que uso la función de depuración de mi IDE (PhpEd). A diferencia de otros IDEs que he usado, PhpEd no requiere prácticamente ninguna configuración. la única razón por la que no lo uso para cualquier problema que encuentro es que es dolorosamente lento. No estoy seguro de que la lentitud sea específica de PhpEd o de cualquier depurador de php. PhpEd no es gratuito, pero creo que de todos modos utiliza uno de los depuradores de código abierto (como XDebug mencionado anteriormente). El beneficio con PhpEd, una vez más, es que no requiere ninguna configuración que he encontrado realmente bastante tediosa en el pasado.
El depurador PHPEd en realidad está escrito por el mismo tipo que escribió PHPEd y estoy bastante seguro de que no es de código abierto. Al menos PHPEd no se envía con la fuente, sino que compila .so's y .dll's.
Artem Russakovskii
4
La depuración manual es generalmente más rápida para mí, var_dump()y debug_print_backtrace()son todas las herramientas que necesita para armar su lógica.
Bueno, hasta cierto punto depende de dónde van las cosas al sur. Es lo primero que intento aislar, y luego usaré echo / print_r () según sea necesario.
NB: ¿Saben que pueden pasar true como segundo argumento a print_r () y devolverá el resultado en lugar de imprimirlo? P.ej:
Acabo de envolver eso en una función llamada depuración. Entonces puedo hacer depuración ($ var);
jdelator
3
A menudo uso CakePHP cuando Rails no es posible. Para depurar errores, generalmente lo encuentro error.logen la carpeta tmp y lo sigo en el terminal con el comando ...
tail -f app/tmp/logs/error.log
Le proporciona un diálogo en ejecución desde el pastel de lo que está sucediendo, lo cual es bastante útil, si desea generar algo a medio código que puede usar.
$this->log('xxxx');
Esto generalmente puede darle una buena idea de lo que está sucediendo / mal.
Komodo IDE funciona bien con xdebug, incluso para la depuración de eliminación. Necesita una cantidad mínima de configuración. Todo lo que necesita es una versión de php que Komodo pueda usar localmente para recorrer el código en un punto de interrupción. Si tiene la secuencia de comandos importada en el proyecto de Komodo, puede establecer puntos de interrupción con un clic del mouse tal como lo configuraría dentro de eclipse para depurar un programa de Java. Obviamente, la depuración remota es más difícil de hacer que funcione correctamente (puede que tenga que asignar la url remota con un script php en su espacio de trabajo) que una configuración de depuración local que es bastante fácil de configurar si está en un escritorio MAC o Linux .
Existen muchas técnicas de depuración de PHP que pueden ahorrarle innumerables horas al codificar. Una técnica de depuración efectiva pero básica es simplemente activar el informe de errores. Otra técnica un poco más avanzada implica el uso de declaraciones de impresión, que pueden ayudar a identificar errores más difíciles de alcanzar al mostrar lo que realmente está pasando en la pantalla. PHPeclipse es un complemento de Eclipse que puede resaltar errores de sintaxis comunes y puede usarse junto con un depurador para establecer puntos de interrupción.
Yo uso zend studio para eclipse con el depurador incorporado. Todavía es lento en comparación con la depuración con eclipse pdt con xdebug. Esperemos que solucionen esos problemas, la velocidad ha mejorado con respecto a los lanzamientos recientes, pero aún pasar de largo toma 2-3 segundos. La barra de herramientas zend firefox realmente facilita las cosas (depurar la página siguiente, página actual, etc.). También proporciona un generador de perfiles que comparará su código y proporcionará gráficos circulares, tiempo de ejecución, etc.
La mayoría de los errores se pueden encontrar fácilmente simplemente var_dumpcon algunas de las variables clave, pero obviamente depende del tipo de aplicación que desarrolle.
Para algoritmos más complejos, las funciones de paso / punto de interrupción / observación son muy útiles (si no es necesario)
El Depurador PHP interactivo paso a paso implementado como un módulo SAPI que puede brindarle un control completo sobre el entorno sin afectar la funcionalidad o el rendimiento de su código. Su objetivo es ser una plataforma de depuración ligera, potente y fácil de usar para PHP 5.4+ y se envía de fábrica con PHP 5.6.
Las características incluyen:
Depuración paso a paso
Puntos de interrupción flexibles (método de clase, función, archivo: línea, dirección, código de operación)
Fácil acceso a PHP con eval () incorporado
Fácil acceso al código actualmente en ejecución
API de usuario
SAPI Agnostic - Fácilmente integrado
Soporte de archivos de configuración de PHP
JIT Super Globals - ¡¡Establezca la suya !!
Soporte opcional de readline - Operación de terminal cómoda
Soporte de depuración remota: paquete de GUI de Java
Si su sistema admite el seguimiento dinámico de DTrace (instalado de forma predeterminada en OS X) y su PHP está compilado con las sondas DTrace habilitadas ( --enable-dtrace), que debería estar por defecto, este comando puede ayudarlo a depurar el script PHP sin tiempo:
Para probar eso, puede ir a cualquier docroot con index.phpy ejecutar el servidor integrado PHP mediante:
php -S localhost:8080
Después de eso, puede acceder al sitio en http: // localhost: 8080 / (o elegir el puerto que sea conveniente para usted). Desde allí, acceda a algunas páginas para ver la salida de seguimiento.
Nota: Dtrace está disponible en OS X de manera predeterminada, en Linux probablemente necesite dtrace4linux o busque otras alternativas .
Alternativamente, compruebe el seguimiento de SystemTap instalando el paquete de desarrollo SystemTap SDT (por ejemplo yum install systemtap-sdt-devel)
Aquí hay un script de ejemplo ( all_probes.stp) para rastrear todos los puntos centrales de la sonda estática PHP durante la duración de un script PHP en ejecución con SystemTap:
+1 para print_r (). Úselo para volcar el contenido de un objeto o variable. Para hacerlo más legible, hágalo con una etiqueta previa para que no necesite ver la fuente.
echo '<pre>';
print_r($arrayOrObject);
También var_dump ($ thing): esto es muy útil para ver el tipo de subthings
Dependiendo del problema, me gusta una combinación de error_reporting (E_ALL) mezclado con pruebas de eco (para encontrar la línea / archivo ofensivo en el que se produjo el error inicialmente; ¿SABES que no siempre es la línea / archivo que php te dice?), Coincidencia de llaves IDE (para resolver "Error de análisis: error de sintaxis, problemas inesperados de $ end") e print_r (); salida; volcados (los programadores reales ven la fuente; p).
Tampoco puedes vencer a phpdebug (comprueba sourceforge) con "memory_get_usage ();" y "memory_get_peak_usage ();" para encontrar las áreas problemáticas.
Los depuradores integrados donde puede ver los valores de cambio de variable a medida que avanza por el código son realmente geniales. Sin embargo, requieren una configuración de software en el servidor y una cierta cantidad de configuración en el cliente. Ambos requieren mantenimiento periódico para mantenerse en buen estado de funcionamiento.
Un print_r es fácil de escribir y está garantizado para funcionar en cualquier configuración.
Por lo general, encuentro crear una función de registro personalizada capaz de guardar en un archivo, almacenar información de depuración y, finalmente, volver a imprimir en un pie de página común.
También puede anular la clase de excepción común, para que este tipo de depuración sea semiautomatizada.
Respuestas:
Pruebe Eclipse PDT para configurar un entorno Eclipse que tenga características de depuración como usted mencionó. La capacidad de ingresar al código es una forma mucho mejor de depurar que el método anterior de var_dump e imprimir en varios puntos para ver dónde falla su flujo. Sin embargo, cuando todo lo demás falla y todo lo que tengo es SSH y vim todavía
var_dump()
/die()
para encontrar dónde va el código hacia el sur.fuente
kill($data) { echo "<pre>"; var_dump($data); echo "</pre>"; exit; }
Puede usar Firephp, un complemento de firebug para depurar php en el mismo entorno que javascript.
También uso Xdebug mencionado anteriormente para perfilar php.
fuente
Este es mi pequeño entorno de depuración:
fuente
assert_callcack
jeXdebug y el complemento DBGp para Notepad ++ para la búsqueda de errores de servicio pesado, FirePHP para cosas livianas. ¿Rápido y sucio? Nada supera a dBug .
fuente
XDebug es esencial para el desarrollo. Lo instalo antes que cualquier otra extensión. Le da rastros de pila en cualquier error y puede habilitar la creación de perfiles fácilmente.
Para un vistazo rápido a una estructura de datos, use
var_dump()
. No lo useprint_r()
porque tendrá que rodearlo<pre>
y solo imprime una variable a la vez.Para un entorno de depuración real, lo mejor que he encontrado es Komodo IDE, pero cuesta $$.
fuente
PhpEd es realmente bueno. Puede entrar / salir / salir de funciones. Puede ejecutar código ad-hoc, inspeccionar variables, cambiar variables. Es asombroso.
fuente
1) Yo uso print_r (). En TextMate, tengo un fragmento de 'pre' que se expande a esto:
2) Uso Xdebug, pero no he podido hacer que la GUI funcione correctamente en mi Mac. Al menos imprime una versión legible del seguimiento de la pila.
fuente
echo '<pre>', print_r($var, true), '</pre>';
He usado Zend Studio (5.5) , junto con Zend Platform . Eso proporciona una depuración adecuada, puntos de interrupción / paso sobre el código, etc., aunque a un precio.
fuente
Honestamente, una combinación de print y print_r () para imprimir las variables. Sé que muchos prefieren usar otros métodos más avanzados, pero creo que este es el más fácil de usar.
Diré que no aprecié completamente esto hasta que hice algo de programación de microprocesador en Uni y no pude usar ni siquiera esto.
fuente
Xdebug , de Derick Rethans, es muy bueno. Lo usé hace algún tiempo y descubrí que no era tan fácil de instalar. Una vez que hayas terminado, no entenderás cómo te las arreglaste sin él :-)
Hay un buen artículo sobre Zend Developer Zone (instalar en Linux no parece más fácil) e incluso un complemento de Firefox , que nunca usé.
fuente
Yo uso Netbeans con XDebug. Echa un vistazo en su sitio web para obtener documentos sobre cómo configurarlo. http://php.netbeans.org/
fuente
Uso Netbeans con XDebug y el complemento Easy XDebug FireFox
El complemento es esencial cuando depura proyectos MVC, porque la forma normal en que XDebug se ejecuta en Netbeans es registrar la sesión dbug a través de la URL. Con el complemento instalado en Firefox, configuraría las propiedades de su proyecto Netbeans -> Ejecutar configuración -> Avanzado y seleccionaría "No abrir el navegador web". Ahora puede configurar sus puntos de interrupción e iniciar la sesión de depuración con Ctrl-F5 como de costumbre. . Abra FireFox y haga clic con el botón derecho en el icono Complemento en la esquina inferior derecha para comenzar a monitorear los puntos de interrupción. Cuando el código llegue al punto de interrupción, se detendrá y podrá inspeccionar sus estados variables y la pila de llamadas.
fuente
El almacenamiento en búfer de salida es muy útil si no desea estropear su salida. Hago esto en una sola línea que puedo comentar / descomentar a voluntad
fuente
PhpEdit tiene un depurador incorporado, pero generalmente termino usando echo (); y print_r (); a la antigua usanza !!
fuente
Para los problemas realmente difíciles que llevarían demasiado tiempo usar print_r / echo para descubrir que uso la función de depuración de mi IDE (PhpEd). A diferencia de otros IDEs que he usado, PhpEd no requiere prácticamente ninguna configuración. la única razón por la que no lo uso para cualquier problema que encuentro es que es dolorosamente lento. No estoy seguro de que la lentitud sea específica de PhpEd o de cualquier depurador de php. PhpEd no es gratuito, pero creo que de todos modos utiliza uno de los depuradores de código abierto (como XDebug mencionado anteriormente). El beneficio con PhpEd, una vez más, es que no requiere ninguna configuración que he encontrado realmente bastante tediosa en el pasado.
fuente
La depuración manual es generalmente más rápida para mí,
var_dump()
ydebug_print_backtrace()
son todas las herramientas que necesita para armar su lógica.fuente
Bueno, hasta cierto punto depende de dónde van las cosas al sur. Es lo primero que intento aislar, y luego usaré echo / print_r () según sea necesario.
NB: ¿Saben que pueden pasar true como segundo argumento a print_r () y devolverá el resultado en lugar de imprimirlo? P.ej:
fuente
A menudo uso CakePHP cuando Rails no es posible. Para depurar errores, generalmente lo encuentro
error.log
en la carpeta tmp y lo sigo en el terminal con el comando ...Le proporciona un diálogo en ejecución desde el pastel de lo que está sucediendo, lo cual es bastante útil, si desea generar algo a medio código que puede usar.
Esto generalmente puede darle una buena idea de lo que está sucediendo / mal.
fuente
print_r (debug_backtrace ());
o algo así :-)
fuente
Komodo IDE funciona bien con xdebug, incluso para la depuración de eliminación. Necesita una cantidad mínima de configuración. Todo lo que necesita es una versión de php que Komodo pueda usar localmente para recorrer el código en un punto de interrupción. Si tiene la secuencia de comandos importada en el proyecto de Komodo, puede establecer puntos de interrupción con un clic del mouse tal como lo configuraría dentro de eclipse para depurar un programa de Java. Obviamente, la depuración remota es más difícil de hacer que funcione correctamente (puede que tenga que asignar la url remota con un script php en su espacio de trabajo) que una configuración de depuración local que es bastante fácil de configurar si está en un escritorio MAC o Linux .
fuente
Nusphere también es un buen depurador para php nusphere
fuente
Existen muchas técnicas de depuración de PHP que pueden ahorrarle innumerables horas al codificar. Una técnica de depuración efectiva pero básica es simplemente activar el informe de errores. Otra técnica un poco más avanzada implica el uso de declaraciones de impresión, que pueden ayudar a identificar errores más difíciles de alcanzar al mostrar lo que realmente está pasando en la pantalla. PHPeclipse es un complemento de Eclipse que puede resaltar errores de sintaxis comunes y puede usarse junto con un depurador para establecer puntos de interrupción.
y también usado
fuente
En un entorno de producción, registro datos relevantes en el registro de errores del servidor con error_log ().
fuente
Yo uso zend studio para eclipse con el depurador incorporado. Todavía es lento en comparación con la depuración con eclipse pdt con xdebug. Esperemos que solucionen esos problemas, la velocidad ha mejorado con respecto a los lanzamientos recientes, pero aún pasar de largo toma 2-3 segundos. La barra de herramientas zend firefox realmente facilita las cosas (depurar la página siguiente, página actual, etc.). También proporciona un generador de perfiles que comparará su código y proporcionará gráficos circulares, tiempo de ejecución, etc.
fuente
La mayoría de los errores se pueden encontrar fácilmente simplemente
var_dump
con algunas de las variables clave, pero obviamente depende del tipo de aplicación que desarrolle.Para algoritmos más complejos, las funciones de paso / punto de interrupción / observación son muy útiles (si no es necesario)
fuente
PHP DBG
El Depurador PHP interactivo paso a paso implementado como un módulo SAPI que puede brindarle un control completo sobre el entorno sin afectar la funcionalidad o el rendimiento de su código. Su objetivo es ser una plataforma de depuración ligera, potente y fácil de usar para PHP 5.4+ y se envía de fábrica con PHP 5.6.
Las características incluyen:
Ver las capturas de pantalla:
Página de inicio: http://phpdbg.com/
Error de PHP : mejor informe de errores para PHP
Esta es una biblioteca muy fácil de usar (en realidad un archivo) para depurar sus scripts PHP.
Lo único que debe hacer es incluir un archivo como se muestra a continuación (al principio en su código):
Luego, todos los errores le darán información como traza inversa, contexto de código, argumentos de función, variables de servidor, etc. Por ejemplo:
Las características incluyen:
Página de inicio: http://phperror.net/
GitHub: https://github.com/JosephLenton/PHP-Error
Mi tenedor (con correcciones adicionales): https://github.com/kenorb-contrib/PHP-Error
DTrace
Si su sistema admite el seguimiento dinámico de DTrace (instalado de forma predeterminada en OS X) y su PHP está compilado con las sondas DTrace habilitadas (
--enable-dtrace
), que debería estar por defecto, este comando puede ayudarlo a depurar el script PHP sin tiempo:Entonces, dado el siguiente alias se ha agregado a sus archivos rc (por ejemplo
~/.bashrc
,~/.bash_aliases
):es posible trazar la secuencia de comandos con alias fácil de recordar:
trace-php
.Aquí hay un script dtrace más avanzado, solo guárdelo, hágalo
dtruss-php.d
ejecutable (chmod +x dtruss-php.d
) y ejecute:Página de inicio: lámpara dtruss en GitHub
Aquí hay un uso simple:
sudo dtruss-php.d
.php -r "phpinfo();"
.Para probar eso, puede ir a cualquier docroot con
index.php
y ejecutar el servidor integrado PHP mediante:Después de eso, puede acceder al sitio en http: // localhost: 8080 / (o elegir el puerto que sea conveniente para usted). Desde allí, acceda a algunas páginas para ver la salida de seguimiento.
Nota: Dtrace está disponible en OS X de manera predeterminada, en Linux probablemente necesite dtrace4linux o busque otras alternativas .
Consulte: Uso de PHP y DTrace en php.net
SystemTap
Alternativamente, compruebe el seguimiento de SystemTap instalando el paquete de desarrollo SystemTap SDT (por ejemplo
yum install systemtap-sdt-devel
)Aquí hay un script de ejemplo (
all_probes.stp
) para rastrear todos los puntos centrales de la sonda estática PHP durante la duración de un script PHP en ejecución con SystemTap:Uso:
Consulte: Uso de SystemTap con sondas estáticas DTrace de PHP en php.net
fuente
+1 para print_r (). Úselo para volcar el contenido de un objeto o variable. Para hacerlo más legible, hágalo con una etiqueta previa para que no necesite ver la fuente.
También var_dump ($ thing): esto es muy útil para ver el tipo de subthings
fuente
Dependiendo del problema, me gusta una combinación de error_reporting (E_ALL) mezclado con pruebas de eco (para encontrar la línea / archivo ofensivo en el que se produjo el error inicialmente; ¿SABES que no siempre es la línea / archivo que php te dice?), Coincidencia de llaves IDE (para resolver "Error de análisis: error de sintaxis, problemas inesperados de $ end") e print_r (); salida; volcados (los programadores reales ven la fuente; p).
Tampoco puedes vencer a phpdebug (comprueba sourceforge) con "memory_get_usage ();" y "memory_get_peak_usage ();" para encontrar las áreas problemáticas.
fuente
Los depuradores integrados donde puede ver los valores de cambio de variable a medida que avanza por el código son realmente geniales. Sin embargo, requieren una configuración de software en el servidor y una cierta cantidad de configuración en el cliente. Ambos requieren mantenimiento periódico para mantenerse en buen estado de funcionamiento.
Un print_r es fácil de escribir y está garantizado para funcionar en cualquier configuración.
fuente
Por lo general, encuentro crear una función de registro personalizada capaz de guardar en un archivo, almacenar información de depuración y, finalmente, volver a imprimir en un pie de página común.
También puede anular la clase de excepción común, para que este tipo de depuración sea semiautomatizada.
fuente