¿Xdebug puede ser activado por comandos Drush?

9

Me encuentro con un problema con mis módulos de características y mi perfil de instalación al instalar el sitio con drush si. Hay varios problemas probablemente relacionados en la cola de problemas Características, pero ninguno con buenas soluciones. La parte interesante (mencionada en algunos de los problemas) es que funciona bien al instalar el sitio a través del navegador, pero falla al instalar con drush si.

Tengo una idea de lo que está mal, pero necesito confirmarlo. La única forma en que puedo pensar en confirmarlo es recorrer el código con un depurador (Xdebug es lo que he configurado). Entonces, ¿es posible activar Xdebug desde un comando ejecutado con Drush? Específicamente, ¿puedo hacer que Xdebug se active cuando corro drush si?

Chaulky
fuente

Respuestas:

4

debes recordar que con drush estás (supuestamente) en cli, así que esto debería ayudar:

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

Además, intente ejecutar el comando con la opción -d (--debug): debería proporcionarle mucha información sobre lo que está sucediendo mal.

mojzis
fuente
¿Puede agregar alguna información sobre cómo establecer un punto de interrupción en el código específico de Drush / Drupal? es decir, un número de línea en un archivo en el que el depurador se romperá si se ejecuta drush?
therobyouknow
Parece que hay una respuesta a mi pregunta aquí: randyfay.com/content/… : - "si estás depurando la mayoría de las acciones drush, podrías poner un punto de interrupción en la primera línea de drupal_bootstrap () en include / bootstrap.inc".
therobyouknow
3

Puede usar las funciones xdebug_start_trace()y xdebug_stop_trace()XDebug para iniciar el depurador bajo demanda. Asegúrese de haber configurado XDebug en CLI primero ( php -i | grep xdebug).

Luego cree un nuevo archivo PHP de una línea de la siguiente manera (por ejemplo, drush_xdebug_start.inc):

<?php xdebug_start_trace();

Luego ejecuta el drush como:

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

Uso XDebug en solicitudes drush todo el tiempo.

  1. Asegúrese de que XDebug esté cargado en su CLI php ejecutando php -i
  2. Asegúrese de que su cliente esté escuchando las conexiones XDebug y que lo esté haciendo en el puerto correcto. He depurado con éxito usando PHPStorm, Netbeans y Komodo IDE como clientes.
Moshe Weitzman
fuente
1
¿Puede dar un ejemplo de dónde (dentro de drush o dentro de otra parte del código de Drupal que drush llama) se establecería un punto de interrupción para que xdebug se rompa en esta línea de código cuando se ejecute drush?
therobyouknow
Parece que hay una respuesta a mi pregunta aquí: randyfay.com/content/… : - "si estás depurando la mayoría de las acciones drush, podrías poner un punto de interrupción en la primera línea de drupal_bootstrap () en include / bootstrap.inc".
therobyouknow
1

Suponiendo que tiene Xdebug configurado correctamente, es muy fácil integrar su IDE para recorrer el código. Simplemente configure la variable de entorno XDEBUG_CONFIG en "idekey = MYIDEKEY".

Hazlo más fácil configurando un alias para ello. Esto es lo que uso en mi archivo .alias (tcsh):

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