¿Cómo depuras plugins?

12 ago 2010, 02:09:56
Vistas: 14K
Votos: 53

Soy bastante nuevo en la creación de plugins y he tenido dificultades para depurar.

He usado muchos echo y resulta desordenado y poco elegante.

Estoy seguro de que hay una mejor manera de hacer esto, ¿tal vez un IDE con un depurador donde pueda ejecutar todo el sitio incluyendo el plugin?

2
Comentarios

No he visto un IDE que ejecute WordPress completamente dentro del IDE... aunque sería increíble. Depuro los complementos ejecutando WAMP localmente y codificando en Dreamweaver. Si configuras WP_DEBUG a false, como recomienda John, entonces obtienes una buena idea de lo que está fallando, si algo, dentro de tus scripts. Luego puedes editar en Dreamweaver, presionar Ctrl+S y luego F5 en el navegador para ver los cambios inmediatamente.

EAMann EAMann
12 ago 2010 03:11:43

@EAMann - Asegúrate de revisar tanto PhpEd (para Windows) como PhpStorm+XDEBUG (para Mac, Linux y Windows).

MikeSchinkel MikeSchinkel
12 ago 2010 20:06:25
Todas las respuestas a la pregunta 16
2
24

Ve al archivo wp-config.php y cambia define('WP_DEBUG', false); por define('WP_DEBUG', true);. Además, instala el plugin Log Deprecated Notices de Andrew Nacin.

12 ago 2010 02:21:15
Comentarios

También te recomendaría echar un vistazo al otro artículo de Nacin: http://www.andrewnacin.com/2010/04/23/5-ways-to-debug-wordpress/

kevtrout kevtrout
12 ago 2010 18:10:25

Con PHP 5.4+ probablemente te verás inundado de avisos E_STRICT. Coloca este gist en la carpeta de plugins y actívalo para eliminar los avisos Strict, desactívalo para volver a tu configuración normal.

webaware webaware
17 nov 2013 01:20:22
0
12

Si estás recibiendo errores impresos, entonces x-debug es una extensión brillante de PHP que añade trazas de ejecución modernas a PHP.

Si estás intentando averiguar qué está pasando cuando no hay errores, mi enfoque favorito es definir una función que registre su salida en un archivo. Así que uso plog($variable) y eso aparece en el archivo de registro que luego puedo examinar. Esto es especialmente útil cuando estás intentando averiguar qué ocurrió antes de que se llame a header(), o en otras situaciones donde no puedes imprimir en STDOUT.

25 ago 2010 21:30:38
0
10

Utiliza xdebug + NetBeans IDE. Cuando esté completamente configurado - lo cual es fácil de hacer - puedes establecer puntos de interrupción en tu plugin y observar las variables en esos puntos. Creo que es la mejor manera de depurar plugins o cualquier aplicación PHP en general.

25 ago 2010 15:34:22
2

Después de probar varios IDE, me decidí por el sencillo Notepad++ con un esquema de colores para resaltado de sintaxis ultra personalizado.

Tengo configurada una macro de modo que cuando presiono Shift-Ctrl-X, se inserta el siguiente código donde está mi cursor:

echo "<pre>";
var_dump($);
echo "</pre>";
exit();

Es simple, pero generalmente puedo detectar el 90% de mis errores con esta macro además de tener WP_DEBUG activado.

12 ago 2010 05:58:48
Comentarios

Buena jugada. ¡Los atajos de teclado en los editores son geniales!

hakre hakre
25 ago 2010 23:59:23

Prefiero la salida que da print_r($var, true) en lugar de var_dump.

brasofilo brasofilo
29 ene 2013 23:48:09
0

Depuro a la antigua, usando error_log() y var_dump(). Encuentro que es la forma más eficiente para mí, tengo un par de funciones wrapper para manejar diferentes tipos de datos, ya que hacer error_log de arrays y objetos puede ser engorroso. Además, usar print_r() puede ser difícil de leer cuando no está dentro de un <pre>. Tengo tj_log() para logs de errores y tj() para mostrar salida (que básicamente muestra cualquier tipo de dato de manera presentable:

function tj( $code ) {

    ?>
    <style>
        .tj_debug { word-wrap: break-word; white-space: pre; text-align: left; position: relative; background-color: rgba(0, 0, 0, 0.8); font-size: 11px; color: #a1a1a1; margin: 10px; padding: 10px; margin: 0 auto; width: 80%; overflow: auto; -moz-box-shadow:0 10px 40px rgba(0, 0, 0, 0.75); -webkit-box-shadow:0 10px 40px rgba(0, 0, 0, 0.75); -moz-border-radius: 5px; -webkit-border-radius: 5px; text-shadow: none; }
    </style>
    <br /><pre class="tj_debug">

    <?php
    if ( is_null( $code ) || is_string($code) || is_int( $code ) || is_bool($code) || is_float( $code ) ) :
        var_dump( $code );

    else :
        print_r( $code );

    endif;

    echo '</pre><br />';

}

function tj_log( $code ) {

    if ( is_null( $code ) || is_string($code) || is_int( $code ) || is_bool($code) || is_float( $code ) ) :
        $code = var_export( $code, true );

    else :
        $code = print_r( $code, true );

    endif;

    error_log( $code );

}

Así que simplemente hago: tj( $current_user ); o lo que sea.

12 ago 2010 18:04:09
0

Escribí una pequeña clase para crear un archivo de registro, es muy útil cuando estás depurando llamadas AJAX.

http://github.com/hunk/Magic-Fields/blob/master/tools/debug.php

Solo necesitas hacer algo como:

Debug::log("Este es un mensaje de depuración");

Cuando esa línea se ejecute, el mensaje será añadido al archivo de registro y después podrás usar el comando tail (si estás usando algún sistema operativo estilo Unix)

tail -f miarchivoregistro.log

También puedes pasar a esta función un array o un objeto.

Nota: necesitas cambiar la línea 20 por una ruta donde quieras guardar tu archivo de registro

14 ago 2010 03:19:59
0

Utilizo Aptane IDE en Linux y UltraEdit en Windows, y este último también tiene un analizador PHP. Además, visualizo todas las sugerencias de xDebug con la constante WP_DEBUG definida en wp-config.php.

Consulta también mi publicación sobre este tema y no dudes en comentar y dar tu opinión sobre tus herramientas de desarrollo.

13 ago 2010 22:08:33
0

Te recomiendo que eches un vistazo a FirePHP. Puedes enviar información de depuración al Firebug de Firefox a través de cabeceras HTTP, lo que generalmente proporciona una salida de depuración más limpia.

12 ago 2010 06:02:30
0

No está tan mal tampoco: Eclipse. Está cerca de PhpStorm y además es gratuito.

25 ago 2010 01:25:09
0

Hay dos IDEs que puedo recomendar y que he usado ampliamente: PhpED (solo para Windows) y PhpStorm+XDEBUG (Mac, Windows y Linux). Actualmente estoy en Mac, así que solo puedo usar el segundo.

¡Ambos son increíbles! La buena noticia es que PhpStorm cuesta $49 antes de septiembre de 2010 y solo $99 después de esa fecha. Si estuviera en Windows y tuviera que elegir de nuevo, no estoy seguro cuál escogería.

Francamente, no puedo evitar sentir que cualquier desarrollador de plugins que no use una de estas dos herramientas está severamente limitado, especialmente si son relativamente nuevos en el desarrollo de plugins para WordPress.

12 ago 2010 06:15:53
0

Krumo - la clase de depuración de PHP con estilo

Otra cosa realmente genial es la clase PHP "krumo". Se implementa en ½ minuto y ofrece una forma sencilla de depurar todo tipo de variables:

  • objetos,
  • arrays,
  • strings/float/integer/etc.

Además ayuda con el backtracing, muestra las clases cargadas o archivos incluidos y todo bajo demanda.

Y además ¡es GRATIS!

Descarga

Krumo @sourceforge

13 ene 2011 18:56:39
2

Utilizo un plugin de $13 llamado LogPress que puedes comprar en ThemeForest y es absolutamente increíble. Puedes depurar todo lo relacionado con sus plugins y el sitio. Soporta registro en la consola de Firebug y mucho más. No puedo vivir sin él, así de mucho uso este plugin.

Este plugin es probablemente el mejor dinero que he gastado y me ha ahorrado innumerables horas en el desarrollo de plugins para WordPress.

14 ene 2011 13:32:13
Comentarios

¡Vaya, me votaron en contra por recomendar un plugin de pago con el que no tengo ninguna asociación? ¿No es eso un poco excesivo?

Dwayne Charrington Dwayne Charrington
15 feb 2012 04:53:16

No soy quien te votó en contra, pero no me sorprende. Usas palabras como si estuvieras tratando de vender el plugin. Recomendar cosas está bien, pero presionar con un discurso de venta agresiva como "una bendición absoluta de Dios". La gente odia la publicidad. Solo modera el lenguaje y la recomendación hablará por sí misma.

icc97 icc97
27 nov 2016 19:01:41
0

Estoy usando phpED y xdebug pero para mí (y parece que para otros también) ¡es imposible depurar los archivos de plugins o del tema! ¡El depurador solo se detiene en los puntos de interrupción que están en los archivos principales o del "core" original! ¿Alguien puede ayudarme?

22 feb 2011 22:00:02
0

Primero agrego define('WP_DEBUG', false); al archivo wp-config.php (como la mayoría de la gente recomienda) en mi instalación local, que es una copia reciente de un sitio de producción relevante (tanto archivos como datos). Esto hace que las cosas sean rápidas, seguras, separadas pero refleja bien al menos un lugar donde el plugin realmente se utilizará.

También agrego el plugin Debug Bar junto con algunos de los complementos de Debug Bar (como Transients, por ejemplo) - según corresponda para tus plugins.

También uso el complemento Firebug para Firefox, que es excelente para ayudar a rastrear problemas de HTML, CSS y JavaScript, así como para investigar rarezas de diseño.

Programo usando UltraEdit, que he utilizado durante más de 15 años para todo tipo de codificación (desde PHP hasta SQL) tanto en el trabajo como en casa, por lo que funciona bien para mí, aunque quizás no tenga suficientes funciones para considerarse un IDE para muchas personas. Tiene resaltado de sintaxis, autocompletado y funciones de diseño de código, además de un conjunto de herramientas de acceso rápido para HTML y CSS que pueden ayudar a evitar errores tipográficos y similares. Principalmente, esto me brinda familiaridad, que es un aspecto importante que a menudo se pasa por alto en la prisa por lo nuevo. La memoria muscular ayuda a la repetibilidad, incluso en la codificación.

Y, por supuesto, normalmente tengo alguna página apropiada del codex abierta en otra pestaña como ejemplo adecuado.

Todos estos elementos ayudan de diferentes maneras a resaltar errores de codificación, análisis, funcionales y de diseño, y no interfieren mucho en cómo programo o si nada anda mal. La mayoría pueden ignorarse o desactivarse por un tiempo si estás experimentando o trabajando en algo que revisarás más tarde.

Ah, y no hay nada malo en un echo o print_r bien posicionado para verificar algo en un momento clave (siempre y cuando los elimines cuando hayas terminado).

19 nov 2015 17:17:39
0

Echa un vistazo a Query Monitor combinado con Query Monitor Extend para una depuración exhaustiva de WordPress (errores PHP/notices/stricts/warnings, consultas a la base de datos, rutas, constantes, peticiones HTTP, transients, variables de sesión, var dumps).

También revisa los plugins All Post Meta y Saving What para información específica sobre posts.

19 nov 2015 17:53:42
2

PHPStorm y Xdebug han sido un cambio radical para mí en el desarrollo con WordPress. Lo recomiendo mucho ahora. Especialmente con sus herramientas de depuración en línea.

30 ene 2016 04:56:25
Comentarios

¿Cómo lo configuras?

jgraup jgraup
30 ene 2016 05:57:22

Solo ve a su sitio de ayuda: https://www.jetbrains.com/help/phpstorm/2016.2/configuring-xdebug.html

Emanuel Rocha Costa Emanuel Rocha Costa
15 sept 2016 06:25:27