it-swarm-es.com

¿Cómo depuras los plugins?

Soy bastante nuevo en la autoría de plugins y estaba teniendo dificultades para la depuración.

Usé mucho eco y es descuidado y feo.

Estoy seguro de que hay una mejor manera de hacerlo, tal vez un IDE con un depurador en el que pueda ejecutar todo el sitio, incluido el complemento.

47
Sruly

Vaya a wp-config.php y cambie define('WP_DEBUG', false); a define('WP_DEBUG', true);. Además, instale los avisos de Andrew Nacin's Log en desuso plugin.

21
John P Bloch

Si está imprimiendo errores, entonces x-debug es una brillante PHP extensión que agrega backtraces modernos a PHP.

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

12
tomdxw

Utilice xdebug + NetBeans IDE. Cuando esté completamente configurado, lo que es fácil de hacer, puede establecer puntos de interrupción en su complemento y observar variables en los puntos de interrupción. Creo que es la mejor manera de depurar los complementos o cualquier aplicación de PHP para esa materia.

10
Raj

Debugé a la antigua usanza, error_log()ing y var_dumping. Creo que esa es la forma más eficiente para mí, tengo un par de funciones de envoltorio para manejar diferentes tipos de datos, ya que las matrices y objetos error_loging pueden ser una molestia. Además, usar print_r() en puede ser difícil de leer cuando no está en un <pre>. Tengo tj_log() para el registro de errores, y tj() para mostrar la salida (que básicamente muestra cualquier tipo de datos en una forma 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 );

}

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

6
Joe Hoyle

Escribí una pequeña clase para hacer 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 se ejecute esa línea, se agregará el mensaje en el archivo de registro y luego podrá usar el comando tail (si está usando el sistema operativo de algún estilo de Unix)

cola -f mylogfile.log

Si puede pasar a esta función una matriz o un objeto también.

note necesita cambiar la línea 20 para una ruta donde desea guardar su archivo de registro

5
Gnuget

Después de juguetear con varios IDE, me instalé en el antiguo Notepad ++ con un esquema de color de resaltado de sintaxis ultra personalizado.

Tengo una macro configurada de tal manera que cuando presiono Shift-Ctrl-X, el siguiente código obtiene una salida donde está mi cursor:

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

Es simple, pero generalmente puedo cazar el 90% de mis errores con esta macro más WP_DEBUG habilitado.

5
SethMerrick

Uso Aptane IDE en Linux y UltraEdit en Windows, y este también tiene un analizador de PHP. Además, veo todos los consejos de xDebug con la constante WP_DEBUG definida en wp-config.php.

Vea también mi publicar sobre este tema y siéntase libre de hacer comentarios y comentarios sobre sus herramientas de desarrollo.

3
bueltge

Tampoco está mal: Eclipse Está cerca de PhpStorm + gratis.

2
kaiser

Recomiendo revisar FirePHP . Puede enviar información de depuración a Firebug de Firefox a través de encabezados HTTP, lo que generalmente hace que la salida de depuración sea más limpia.

2
Annika Backstrom

Hay dos IDEs que puedo recomendar y los he usado ampliamente: PhpED (solo Windows) y PhpStorm + XDEBUG (Mac, Windows y Linux). Estoy en Mac ahora, así que solo puedo usar el último.

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

Francamente, no puedo evitar sentir que cualquier desarrollador de complementos que no utilice una de estas dos herramientas tiene una gran desventaja, especialmente si son relativamente nuevos en el desarrollo de complementos de WordPress.

1
MikeSchinkel

Krumo - la clase de depuración php con estilo

Otra cosa realmente agradable es la clase php "krumo". Se implementa en ½ minuto y ofrece una forma fácil de depurar todo tipo de variables:

  • objetos,
  • matrices
  • cuerdas/float/integer/etc.

Más ayuda con el retroceso, muestra clases cargadas o archivos incluidos y todo lo que se solicite.

Plus es GRATIS!

Descargar

Krumo @sourceforge

1
kaiser

En primer lugar, agrego define('WP_DEBUG', false); al archivo wp-config.php (como ha dicho la mayoría de la gente) a 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 se reflejen bien al menos en un lugar donde se usará realmente el complemento.

También agrego la Barra de depuración complemento junto con algunos de los complementos de la Barra de depuración (Transitorios, por ejemplo) - según corresponda a sus complementos.

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

Codifico usando UltraEdit, que he usado por más de 15 años por un montón de codificación (php a SQL) tanto en el trabajo como en casa y, por lo tanto, esto funciona bien para mí, pero tal vez no tenga suficiente I para calificar como un IDE para muchas personas. Tiene funciones de resaltado de sintaxis, finalización automática y diseño de código, y un montón de herramientas de acceso directo de html y css que pueden ayudar a evitar errores tipográficos y similares. Principalmente esto me trae familiaridad, que es un aspecto importante que a menudo se pasa por alto en el Rush al nuevo. La memoria muscular ayuda a la repetibilidad incluso en la codificación.

Y, por supuesto, normalmente tengo una página apropiada del códice abierta en otra pestaña en un ejemplar adecuado.

Todo esto ayuda de diferentes maneras para resaltar los errores de codificación, análisis, funcional y de diseño, y no interfiere mucho en cómo codifico o si nada está mal. La mayoría puede ignorarse o desactivarse por un momento si está experimentando o trabajando en algo que volverá a visitar más adelante.

Ah, y no hay nada de malo con un eco o print_r bien posicionados para comprobar algo en una tecla (siempre que los elimines cuando hayas terminado).

0
Lunc

Consulte Query Monitor combinado con Query Monitor Extend para la depuración completa de WordPress (errores de PHP/notices/stricts/warnings, consultas de bases de datos, rutas, constantes, solicitudes HTTP, transitorios, variables de sesión, volts var .

También revisa Todas las publicaciones Meta y Guardando lo que complementos para información específica sobre las publicaciones.

0
Caleb

PHPStorm y Xdebug es un juego que está cambiando para mí para el desarrollo de WordPress. Muy recomendable ahora. Especialmente con sus herramientas de depuración en línea.

0

Estoy usando phpED y xdebug, pero para mí (y parece que para otra persona) es imposible depurar los plugins o el archivo del tema El depurador solo se detiene en los puntos de interrupción que se encuentran en los archivos principales o originales "core". alguien me puede ayudar?

0
Kreker