Comment déboguer un plugin avec Xdebug?


12

J'ai pu installer et configurer assez facilement NetBeans 6.9.1 et Xdebug sur mon environnement local, basé sur PHP 5.3.0 (XAMPP).

Mon problème est maintenant le suivant: si je mets un point d'arrêt sur index.php de Wordpress ou d'autres fichiers PHP de base Wordpress, NetBeans s'arrête correctement à la position souhaitée. Si à la place je mets un point d'arrêt sur un fichier plugin, un déclencheur d'exécution de code NetBeans ne s'arrête pas là.

Savez-vous comment résoudre ce problème?

MISE À JOUR: Plus d'informations sur ce que j'essaie de déboguer

Le plugin s'appelle Vanilla Forums et a la structure de fichiers suivante:

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

J'ai défini le point d'arrêt à l'intérieur d'une fonction nommée vf_validate_optionsdéfinie dans functions.php. Je suis sûr que cette fonction est exécutée, mais NetBeans n'y casse pas.


Si vous mettez une throw new Exception('die');instruction après la ligne du point d'arrêt, cela s'arrête-t-il (dans le sens où cela tue / met fin à votre demande)?
hakre

@hakre Oui, il lève l'exception (je suis sûr que le code où le point d'arrêt est défini est exécuté)
Drake

1
@Drake: Ce code est-il exécuté dans la page principale ou dans un appel Ajax? Je crois que le débogueur Xdebug doit être activé avec certaines variables GET ou POST, puis définit un cookie, peut-être qu'il n'est pas activé pour la demande Ajax?
Jan Fabry

1
J'ai exactement le même problème et je ne trouve toujours pas de solution! J'utilise nusphere phped mais j'ai aussi essayé Eclipse sans résultat! Le seul fichier que xdebug arrête sur le point d'arrêt est le fichier "core" wordpress. Ni le fichier php du thème ne peut être débogué! Faites-moi savoir si vous trouvez une solution, j'ai fait un post sur le forum officiel wordpress sans réponse :(
Kreker

1
Je pense que Jan Fabry est sur la solution. Je préfère utiliser le plugin Firefox EasyXdebug , qui ajoutera le XDEBUG_SESSION_STARTparamètre de requête à toutes les requêtes.
Jeff Stieler

Réponses:



1

Il existe une solution simple avec une extension Firebox Xdebug Helper de Brian Gilbert . Cela définit des cookies pour la xdebugsession qui vous permet d'utiliser xdebugdans vos plugins WordPress.

Il existe également des extensions pour Chrome, Safari et Opera. Les liens peuvent être trouvés sur le site Web de xdebug


0

Salut @Drake:

Question stupide, je sais, mais avez-vous "activé" le plugin? C'est là que je trébuche lorsque les plugins ne sont pas débogués.


Oui, le plugin est activé. Ce que j'essaie de déboguer est un déclencheur de fonction par un menu créé par le plugin self dans la zone administrateur.
Drake

@Drake - Qu'est-ce qu'un "déclencheur de fonction?" Pouvez-vous s'il vous plaît poster votre code en tant que mise à jour de votre question?
MikeSchinkel

0

il n'y a aucun moyen de déboguer les fichiers du plugin. Le seul moyen que j'ai trouvé pour debug wordpress est d'utiliser nphere phped qui n'est malheureusement pas un freeware. Cela semble être le seul à pouvoir le faire, je ne sais pas pourquoi mais je passe beaucoup de temps à trouver comment déboguer avec les netbeans et l'éclipse ... sans résultat!


-3

Eh bien, puisque WordPress lui-même fournit WP_DEBUG, et wp_die($msg)... pourquoi auriez-vous besoin de déboguer avec Xdebug? A moins que vous ne construisiez votre plugin en utilisant un framework?


xdebug propose de nombreux outils que WP_DEBUG et la sortie ne permettent pas - profiler et parcourir le code pour commencer ...
boisvert

D'accord, à l'époque, j'avais très peu de connaissances sur Xdebug.
adrian7
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.