Xdebug può essere attivato dai comandi Drush?


9

Sto riscontrando un problema con i moduli delle mie funzionalità e il mio profilo di installazione durante l'installazione del sito drush si. Esistono numerosi problemi probabilmente correlati nella coda dei problemi delle funzionalità, ma nessuno con buone soluzioni. La parte interessante (menzionata in alcuni dei problemi) è che funziona bene durante l'installazione del sito attraverso il browser, ma non riesce quando si installa con drush si.

Ho un'idea di cosa c'è che non va, ma devo confermarlo. L'unico modo in cui posso pensare di confermarlo è quello di scorrere il codice con un debugger (Xdebug è quello che ho impostato). Quindi, è possibile attivare Xdebug da un comando eseguito con Drush? In particolare, posso far partire Xdebug quando corro drush si?

Risposte:


4

devi ricordare che con drush sei (presumibilmente) in cli, quindi questo dovrebbe aiutare:

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

prova anche a eseguire il comando con l'opzione -d (--debug) - dovrebbe darti molte informazioni su ciò che non va.


Puoi aggiungere alcune informazioni sull'impostazione di un punto di interruzione nel codice specifico Drush / Drupal? cioè un numero di riga in un file su cui si interromperà il debugger se viene eseguito drush?
therobyouknow,

Una risposta alla mia domanda sembra essere qui: randyfay.com/content/… : - "se stai eseguendo il debug della maggior parte delle azioni di droga, potresti inserire un punto di interruzione sulla prima riga di drupal_bootstrap () in include / bootstrap.inc."
therobyouknow,

3

È possibile utilizzare xdebug_start_trace()e xdebug_stop_trace()le funzioni di Xdebug per dare il via il debugger su richiesta. Assicurati di aver prima configurato XDebug nella CLI ( php -i | grep xdebug).

Quindi crea un nuovo file PHP con una riga come segue (ad esempio drush_xdebug_start.inc):

<?php xdebug_start_trace();

Quindi esegui il drush come:

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

2

Uso XDebug per richieste di droghe in ogni momento.

  1. Assicurati che XDebug sia caricato nella tua CLI php eseguendolo php -i
  2. Assicurati che il tuo client stia ascoltando le connessioni XDebug e lo stia facendo sulla porta giusta. Ho eseguito correttamente il debug utilizzando PHPStorm, Netbeans e Komodo IDE come client.

1
Puoi dare un esempio di dove (all'interno di drush stesso o all'interno di un altro pezzo di codice Drupal che drush chiama) sarebbe impostato un breakpoint in modo tale che xdebug si rompa su questa linea di codice quando viene eseguito drush?
therobyouknow,

Una risposta alla mia domanda sembra essere qui: randyfay.com/content/… : - "se stai eseguendo il debug della maggior parte delle azioni di droga, potresti inserire un punto di interruzione sulla prima riga di drupal_bootstrap () in include / bootstrap.inc."
therobyouknow,

1

Supponendo che Xdebug sia configurato correttamente, è molto facile integrare l'IDE per scorrere il codice. Basta impostare la variabile di ambiente XDEBUG_CONFIG su "idekey = MYIDEKEY".

Semplifica impostando un alias per questo. questo è quello che uso nel mio file .alias (tcsh):

alias xdebugon 'setenv XDEBUG_CONFIG "idekey=MYIDEKEY"'
alias xdebugoff 'unsetenv XDEBUG_CONFIG'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.