Может ли Xdebug запускаться командами Drush?


9

Я столкнулся с проблемой с моими модулями компонентов и профилем установки при установке сайта с drush si. В очереди проблем с функциями имеется ряд, вероятно, связанных проблем, но ни один из них не имеет хороших решений. Интересная часть (упомянутая в некоторых вопросах) заключается в том, что она отлично работает при установке сайта через браузер, но не работает при установке с drush si.

У меня есть представление о том, что не так, но нужно это подтвердить. Единственный способ подтвердить это - пройтись по коду с помощью отладчика (Xdebug - это то, что я настроил). Итак, возможно ли запустить Xdebug из команды запуска с Drush? В частности, можно ли заставить Xdebug включиться при запуске drush si?

Ответы:


4

Вы должны помнить, что с drush вы (наиболее вероятно) находитесь в cli, так что это должно помочь:

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

также попробуйте запустить команду с опцией -d (--debug) - она ​​должна дать вам достаточно информации о том, что происходит не так.


Можете ли вы добавить некоторую информацию об установке точки останова в коде, специфичном для Drush / Drupal? то есть номер строки в файле, на котором отладчик прервется при запуске drush?
therobyouknow

Ответ на мой вопрос, по-видимому, находится здесь: randyfay.com/content/… : - «если вы отлаживаете большинство действий с использованием drush, вы можете поставить точку останова на первой строке drupal_bootstrap () в include / bootstrap.inc.»
therobyouknow

3

Вы можете использовать xdebug_start_trace()и xdebug_stop_trace()функцию XDebug пнуть отладчик по требованию. Сначала убедитесь, что вы настроили XDebug в CLI ( php -i | grep xdebug).

Затем создайте новый однострочный PHP-файл следующим образом (например, drush_xdebug_start.inc):

<?php xdebug_start_trace();

Затем запустите дрэш как:

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

2

Я всегда использую XDebug для запросов на загрузку.

  1. Убедитесь, что XDebug загружен в ваш CLI php, запустив php -i
  2. Убедитесь, что ваш клиент прослушивает соединения XDebug и делает это на правильном порту. Я успешно отладил с использованием PHPStorm, Netbeans и Komodo IDE в качестве клиентов.

1
Можете ли вы привести пример, где (внутри самого drush или внутри другого фрагмента кода Drupal, который вызывает drush) будет установлена ​​точка останова, чтобы xdebug прерывал эту строку кода при запуске drush?
therobyouknow

Ответ на мой вопрос, по-видимому, находится здесь: randyfay.com/content/… : - «если вы отлаживаете большинство действий с использованием drush, вы можете поставить точку останова на первой строке drupal_bootstrap () в include / bootstrap.inc.»
therobyouknow

1

Если вы правильно настроили Xdebug, очень легко интегрировать IDE для пошагового выполнения кода. Просто установите переменную окружения XDEBUG_CONFIG на "idekey = MYIDEKEY".

Сделайте это проще, настроив для него псевдоним. это то, что я использую в своем файле .alias (tcsh):

alias xdebugon 'setenv XDEBUG_CONFIG "idekey=MYIDEKEY"'
alias xdebugoff 'unsetenv XDEBUG_CONFIG'
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.