XdebugはDrushコマンドでトリガーできますか?


9

でサイトをインストールすると、機能モジュールとインストールプロファイルで問題が発生しますdrush si。機能の問題キューには、おそらく関連する問題がいくつかありますが、適切な解決策はありません。興味深い部分(いくつかの問題で言及されています)は、ブラウザーを介してサイトをインストールすると正常に動作しますが、を使用してインストールすると失敗することdrush siです。

何が問題かはわかりますが、確認する必要があります。私がそれを確認することを考えることができる唯一の方法は、デバッガーでコードをステップ実行することです(Xdebugは私が設定したものです)。それで、Drushで実行されたコマンドからXdebugをトリガーすることは可能ですか?具体的には、実行時にXdebugを起動できdrush siますか?

回答:


4

あなたはdrushではあなたが(ほとんどの場合)cliにいることを覚えておく必要があるので、これは役立つはずです:

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

また、オプション-d(--debug)を指定してコマンドを実行してみてください。何が問題なのかについて、かなりの情報が得られるはずです。


Drush / Drupal固有のコードでのブレークポイントの設定に関する情報を追加できますか?つまり、drushが実行された場合にデバッガがブレークするファイル内の行番号は何ですか?
therobyouknow 14年

私の質問への答えはここにあるようです:randyfay.com/content/…:-「ほとんどのDrushアクションをデバッグしている場合は、includes / bootstrap.incのdrupal_bootstrap()の最初の行にブレークポイントを置くことができます。」
therobyouknow 14年

3

あなたは使用することができますxdebug_start_trace()し、xdebug_stop_trace()必要に応じてデバッガをキックオフするためにXDebugの機能。最初にCLIでXDebugを設定したことを確認してください(php -i | grep xdebug)。

次に、次のように新しいワンライナーPHPファイルを作成します(例:drush_xdebug_start.inc):

<?php xdebug_start_trace();

次に、drushを次のように実行します。

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

2

私は常にdrushリクエストでXDebugを使用しています。

  1. 次のコマンドを実行して、XDebugがCLI phpにロードされていることを確認します php -i
  2. クライアントがXDebug接続をリッスンし、正しいポートでリッスンしていることを確認してください。PHPStorm、Netbeans、およびKomodo IDEをクライアントとして使用して正常にデバッグしました。

1
(drush自体内またはdrushが呼び出す別のDrupalコード内で)ブレークポイントを設定して、drushの実行時にxdebugがこのコード行でブレークする例を教えてください。
therobyouknow 14年

私の質問への答えはここにあるようです:randyfay.com/content/…:-「ほとんどのDrushアクションをデバッグしている場合は、includes / bootstrap.incのdrupal_bootstrap()の最初の行にブレークポイントを置くことができます。」
therobyouknow 14年

1

Xdebugが適切に構成されていると仮定すると、コードをステップ実行するためにIDEを統合するのは非常に簡単です。環境変数XDEBUG_CONFIGを "idekey = MYIDEKEY"に設定するだけです。

エイリアスを設定して簡単にしてください。これは私の.aliasファイル(tcsh)で使用するものです。

alias xdebugon 'setenv XDEBUG_CONFIG "idekey=MYIDEKEY"'
alias xdebugoff 'unsetenv XDEBUG_CONFIG'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.