Xdebug peut-il être déclenché par des commandes Drush?

9

Je rencontre un problème avec mes modules de fonctionnalités et mon profil d'installation lors de l'installation du site avec drush si. Il y a un certain nombre de problèmes probablement liés dans la file d'attente des problèmes de fonctionnalités, mais aucun avec de bonnes solutions. La partie intéressante (mentionnée dans certains problèmes) est qu'elle fonctionne correctement lors de l'installation du site via le navigateur, mais échoue lors de l'installation avec drush si.

J'ai une idée de ce qui ne va pas, mais je dois le confirmer. La seule façon dont je peux penser à le confirmer est de parcourir le code avec un débogueur (Xdebug est ce que j'ai configuré). Alors, est-il possible de déclencher Xdebug à partir d'une commande exécutée avec Drush? Plus précisément, puis-je obtenir le démarrage de Xdebug lorsque je cours drush si?

Chaulky
la source

Réponses:

4

vous devez vous rappeler qu'avec drush vous êtes (supposément) dans cli, donc cela devrait aider:

/programming/1947395/how-can-i-debug-a-php-cli-script-with-xdebug

essayez également d'exécuter la commande avec l'option -d (--debug) - elle devrait vous donner beaucoup d'informations sur ce qui ne va pas.

mojzis
la source
Pouvez-vous ajouter des informations sur la définition d'un point d'arrêt dans du code Drush / Drupal spécifique? c'est-à-dire un numéro de ligne dans un fichier sur lequel le débogueur se cassera si le drush est exécuté?
therobyouknow
Une réponse à ma question semble être ici: randyfay.com/content/… : - "si vous déboguez la plupart des actions drush, vous pouvez mettre un point d'arrêt sur la première ligne de drupal_bootstrap () dans includes / bootstrap.inc."
therobyouknow
3

Vous pouvez utiliser les fonctions xdebug_start_trace()et xdebug_stop_trace()XDebug pour lancer le débogueur à la demande. Assurez-vous que vous avez d'abord configuré XDebug dans CLI ( php -i | grep xdebug).

Ensuite, créez un nouveau fichier PHP à une ligne comme suit (par exemple drush_xdebug_start.inc):

<?php xdebug_start_trace();

Ensuite, exécutez le drush comme:

drush --early="$PWD"/drush_xdebug_start.inc whatever_command_you_need
kenorb
la source
2

J'utilise XDebug sur les demandes drush tout le temps.

  1. Assurez-vous que XDebug est chargé dans votre php CLI en exécutant php -i
  2. Assurez-vous que votre client écoute les connexions XDebug et le fait sur le bon port. J'ai réussi à déboguer en utilisant PHPStorm, Netbeans et Komodo IDE en tant que clients.
moshe weitzman
la source
1
Pouvez-vous donner un exemple où (dans drush lui-même ou dans un autre morceau de code Drupal qui drush appelle) un point d'arrêt serait défini de sorte que xdebug se casse sur cette ligne de code lorsque drush est exécuté?
therobyouknow
Une réponse à ma question semble être ici: randyfay.com/content/… : - "si vous déboguez la plupart des actions drush, vous pouvez mettre un point d'arrêt sur la première ligne de drupal_bootstrap () dans includes / bootstrap.inc."
therobyouknow
1

En supposant que vous avez correctement configuré Xdebug, il est très facile d'intégrer votre IDE pour parcourir le code. Définissez simplement la variable d'environnement XDEBUG_CONFIG sur "idekey = MYIDEKEY".

Rendez-le plus facile en lui créant un alias. voici ce que j'utilise dans mon fichier .alias (tcsh):

alias xdebugon 'setenv XDEBUG_CONFIG "idekey=MYIDEKEY"'
alias xdebugoff 'unsetenv XDEBUG_CONFIG'
Harry Slaughter
la source