¿Cómo se depuran los complementos?


49

Soy bastante nuevo en la creación de complementos y estaba teniendo dificultades para depurar.

Usé mucho eco y es descuidado y feo.

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


1
No he visto un IDE que ejecute WordPress completamente dentro del IDE ... aunque eso sería increíble. Depurar complementos ejecutando WAMP localmente y codificando en Dreamweaver. Si se establece WP_DEBUGen falso, como recomienda John, se obtiene una idea bastante buena de lo que está mal, si acaso, dentro de sus scripts. Luego puede editar en Dreamweaver, presionar Ctrl + S y luego F5 en el navegador para ver de inmediato los cambios.
EAMann

1
@EAMann: asegúrese de consultar PhpEd (para Windows) y PhpStorm + XDEBUG (para Mac, Linux y Windows).
MikeSchinkel

Respuestas:


21

Entra en wp-config.php y cambia define('WP_DEBUG', false);a define('WP_DEBUG', true);. Además, instale el complemento de avisos obsoletos de registro de Andrew Nacin .


12
También vería el otro artículo de Nacin
kevtrout

Con PHP 5.4+ probablemente se verá inundado de avisos E_STRICT. Coloque esta esencia en la carpeta de complementos y actívela para eliminar avisos estrictos, desactívela para volver a su servicio normal.
webaware

12

Si se imprimen errores, entonces x-debug es una brillante extensión de PHP que agrega retrocesos modernos a PHP.

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


10

Use xdebug + NetBeans IDE. Cuando está completamente configurado, lo cual 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 complementos o cualquier aplicación php para el caso.


6

Yo depuro 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 contenedor para manejar diferentes tipos de datos, ya que error_logincorporar matrices y objetos puede ser una molestia. Además, el uso print_r()de puede ser difícil de leer cuando no está en una <pre>. Tengo tj_log()para el registro de errores y tj()para mostrar la salida (que básicamente muestra cualquier tipo de datos en un presentable mannor:

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 solo hago: tj( $current_user );o lo que sea.


5

Después de jugar con varios IDE, me instalé en el viejo 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 se muestra 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.


2
Buen movimiento. Teclas de acceso rápido del teclado en los editores de rock!
Hakre

1
Prefiero la salida dada por en print_r($var, true)lugar de var_dump.
brasofilo

5

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á un mensaje en el archivo de registro y luego podrá usar el comando de cola (si está utilizando algún sistema operativo de estilo de Unix)

tail -f mylogfile.log

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

tenga en cuenta que necesita cambiar la línea 20 para una ruta donde desea guardar su archivo de registro


3

Uso Aptane IDE en Linux y UltraEdit en Windows, y este también tiene un analizador PHP. Además, veo todas las sugerencias de xDebug con la constante WP_DEBUGdefinida en wp-config.php.

Vea también mi publicación sobre este tema y siéntase libre de comentar y dar su opinión sobre sus herramientas de desarrollo.


2

Te recomiendo que compruebes FirePHP . Puede enviar información de depuración a Firebug de Firefox a través de encabezados HTTP, lo que generalmente proporciona una salida de depuración más limpia.



1

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

¡Ambos ROCK! La buena noticia es que PhpStorm es de $ 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 use una de estas dos herramientas está severamente discapacitado, especialmente si son relativamente nuevos en el desarrollo de complementos de WordPress.


1

Krumo: la clase de depuración de php con estilo

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

  • objetos,
  • matrices,
  • cadenas / flotante / entero / etc.

Además , ayuda con el rastreo, muestra las clases cargadas o los archivos incluidos y todo lo que se necesite.

Además , ¡es GRATIS!

Descargar

Krumo @sourceforge


0

Utilizo un complemento de $ 13 llamado LogPress que puedes comprar en ThemeForest y es un absoluto envío de Dios. Puede depurar todo lo relacionado con sus complementos y sitio. Admite el registro de la consola Firebug y mucho más. No puedo vivir sin él, eso es lo mucho que uso este complemento.

Este complemento es probablemente el mejor dinero que he gastado y me ha ahorrado innumerables horas en el desarrollo de mi complemento de Wordpress.


Wow, me rechazaron por recomendar un complemento de pago con el que no tengo ninguna asociación. Eso es un poco pesado, ¿no?
Dwayne Charrington

No soy yo el que vota, pero no me sorprende. Estás usando palabras como si trataras de vender el complemento. Recomendar las cosas está bien, pero impulsar la venta como "envío absoluto de Dios". La gente odia los anuncios. Simplemente atenúe el idioma y la recomendación hablará por sí misma.
icc97

0

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


0

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 reflejan bien al menos un lugar en el que realmente se usará el complemento.

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

También utilizo el complemento Firebug para Firefox, que es excelente para ayudar a rastrear problemas html, css y JavaScript, y también para analizar la rareza del diseño.

Codifico usando UltraEdit, que he usado durante más de 15 años para una gran cantidad de codificación (php a través de SQL) tanto en el trabajo como en el hogar, por lo que esto funciona bien para mí, pero tal vez no tenga suficiente para calificar como IDE para mucha gente Tiene características de resaltado de sintaxis, finalización automática y diseño de código y un montón de herramientas de acceso directo 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 la carrera hacia lo nuevo. La memoria muscular ayuda a la repetibilidad incluso en la codificación.

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

Todos estos ayudan de diferentes maneras para resaltar los errores de codificación, análisis, funcional y de diseño y no interfieren mucho en la forma en que 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 echo bien posicionado o print_r para verificar algo en una tecla (siempre que los elimine cuando haya terminado).


0

Consulte Query Monitor combinado con Query Monitor Extend para una depuración completa de WordPress (errores / avisos / estrictos / advertencias de PHP, consultas de bases de datos, rutas, constantes, solicitudes HTTP, transitorios, variables de sesión, volcados var).

También consulte Todos los complementos de Meta y Guardar qué para obtener información específica sobre las publicaciones.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.