¿Cómo depurar un complemento con Xdebug?

12

Pude instalar y configurar bastante fácilmente NetBeans 6.9.1 y Xdebug en mi entorno local, basado en PHP 5.3.0 (XAMPP).

Mi problema ahora es el siguiente: si pongo un punto de interrupción en index.php de Wordpress u otros archivos PHP centrales de Wordpress, NetBeans se detiene correctamente en la posición deseada. Si, en cambio, pongo un punto de interrupción en un archivo de complemento, un disparador de la ejecución del código NetBeans no se detiene allí.

¿Sabes cómo se puede resolver?

ACTUALIZACIÓN: Más información sobre lo que estoy tratando de depurar

El complemento se llama Vanilla Forums y tiene la siguiente estructura de archivos:

- plugins
  - vanilla-forums
    + assets
    + nbproject
    + templates
      admin.php
      embed.php
      functions.php
      hooks.php
      plugin.php
      sso.php
      widgets.php

Establecí el punto de interrupción dentro de una función denominada vf_validate_optionsdefinida en functions.php. Estoy seguro de que esta función se ejecuta, pero NetBeans no se rompe allí.

Pato
fuente
Si coloca una throw new Exception('die');declaración después de la línea del punto de interrupción, ¿se detiene (en el sentido de que esto mata / finaliza su solicitud)?
Hakre
@hakre Sí, arroja la excepción (estoy seguro de que se ejecuta el código donde se establece el punto de interrupción)
Drake
1
@Drake: ¿Se ejecuta este código en la página principal o en una llamada Ajax? Creo que el depurador Xdebug debe estar habilitado con algunas variables GET o POST y luego establece una cookie, ¿tal vez no está habilitado para la solicitud de Ajax?
Jan Fabry
1
¡Tengo exactamente el mismo problema y todavía no puedo encontrar una solución! Estoy usando nusphere phped pero también probé Eclipse sin resultados. El único archivo que xdebug detiene en el punto de interrupción son los archivos "core" de wordpress. ¡Ni el archivo php del tema es debugable! Avíseme si encuentra una solución, hice una publicación en el foro oficial de WordPress sin respuestas :(
Kreker
1
Creo que Jan Fabry está en la solución. Prefiero usar el complemento de Firefox EasyXdebug , que agregará el XDEBUG_SESSION_STARTparámetro de consulta a todas las solicitudes.
Jeff Stieler

Respuestas:

1

Hay una solución fácil con una extensión de Firebox Xdebug Helper de Brian Gilbert . Esto establece cookies para la xdebugsesión que le permite usar xdebugdentro de sus complementos de WordPress.

También hay extensiones para Chrome, Safari y Opera. Los enlaces se pueden encontrar en el sitio web de xdebug

Gabrielle Rose
fuente
0

Hola @Drake:

Estúpida pregunta, lo sé, pero ¿has "activado" el complemento? Ahí es donde me tropiezo cuando no se depuran los complementos.

MikeSchinkel
fuente
Sí, el complemento está activado. Lo que estoy tratando de depurar es una función activada por un menú creado por el plugin self en el área del administrador.
Drake
@Drake - ¿Qué es un "disparador de función"? ¿Puede publicar su código como una actualización de su pregunta?
MikeSchinkel
0

no hay forma de depurar los archivos del complemento. La única forma que encontré para depurar wordpress es usar nusphere phped que, desafortunadamente, no es freeware. Parece que el único puede hacer eso, no sé por qué, pero paso mucho tiempo pensando cómo depurar con netbeans y eclipse ... ¡sin resultados!

Kreker
fuente
-3

Bueno, ya que WordPress proporciona WP_DEBUG, y wp_die($msg)... ¿por qué necesita depurar con Xdebug? ¿A menos que esté construyendo su complemento utilizando un marco?

adrian7
fuente
xdebug ofrece muchas herramientas que WP_DEBUG y la salida no ofrecen: creación de perfiles y pasos para comenzar ...
boisvert
De acuerdo, en ese momento tenía muy poco conocimiento sobre Xdebug.
adrian7