Xdebug は、デバッグ クライアント インターフェイスが実行中の PHP に接続されていることを要求します。この章では、xdebug を使用して PHP をセットアップする方法を説明し、いくつかのクライアントを推奨します。
はじめに
Xdebug のリモート デバッガーを使用すると、データ構造を検査し、コードをインタラクティブにステップ実行してデバッグできます。このプロトコルはすでにオープンされており、DBGp と呼ばれます。このプロトコルは xdebug2 で実装され、サポートされなくなった古い GDB と同様のプロトコルを置き換えます。
クライアント
Xdebug2 には、DBGp プロトコルを使用するシンプルなコマンド ライン ツールがバンドルされています。他にも良い仕事をするクライアントがいくつかあります (無料または商用)。
ディレクトリにバンドルされています。 debugclient
xdebug デバッガーを有効にするには、php.ini でいくつかの設定を構成する必要があります。このような設定には、デバッガーを有効にする xdebug.remote_enable、デバッガーが接続する IP アドレスとポートを構成する xdebug.remote_host および xdebug.remote_port が含まれます。開発サーバーを複数の開発者と共有するための xdebug.remote_connect_back 設定もあります。
エラー (PHP エラーまたは例外) が発生したときにデバッガーがセッションを開始する必要がある場合は、xdebug.remot_mode 設定も変更する必要があります。この設定で許可される値は、ハイテナーがスクリプトの先頭でセッションを開始する「req」(デフォルト)、またはエラーが発生したときにセッション値が生成される「jit」です。
これをすべて設定した後でも、xdebug はスクリプトの実行直後にデバッグ セッションを自動的に開始できません。 xdebug デバッガーをアクティブ化するには 3 つの方法があります:
1. コマンドラインでスクリプトを実行する場合は、環境変数を設定する必要があります:
リーリー リーリー
xdebug.remote_host、xdebug.remote_port、xdebug.remote_mode、および xdebug.remote_handler の値をスペースで区切ることで、これらの値を同じ環境変数として構成することもできます。 リーリー
php.ini の XDEBUG_CONFIG を通じてすべての設定を行うことができます。
2. ブラウザでスクリプトをデバッグしたい場合は、URL に
を追加するだけです。 GET パラメータを置き換えるには、XDEBUG_SESSTION_START を POST パラメータまたは COOKIE パラメータとして設定することもできます。詳細については次の章を参照してください。
XDEBUG_SESSION_START=session_name
参数
3. ブラウザで PHP を実行し、デバッガを有効にするには、次のブラウザ プラグインをインストールする必要があります。各プラグインを使用すると、ボタンをクリックするだけでデバッガーを起動できます。これらのプラグインがアクティブ化されると、XDEBUG_SESSION_START ではなく XDEBUG_SESSION Cookie 値が直接設定されます。
Firefox プラグインには、デバッグを容易にする IDE インターフェイスが備わっています。プラグインのアドレス: https://addons.mozilla.org/en-US/firefox/addon/the-easyest-xdebug/.
Chrome 用 Xdebug ヘルパーChrome プラグインを使用すると、ワンクリックでデバッグをオンまたはオフにすることができます。プラグインのアドレス: https://chrome.google.com/extensions/detail/eadndfjplgieldjbigjakmdgkmoaaaoc.
Safari用XdebugトグラーSafari プラグインは、Xdebug デバッグを自動的に有効にすることができます。 Github アドレス: https://github.com/benmatselby/xdebug-toggler.
Opera 用 Xdebug ランチャーOpera プラグインを使用すると、xdebug デバッグ セッションを開くことができます。
スクリプトを実行する前に、クライアントがデバッグ接続を受信できるようにする必要があります。この記事を参照して、クライアントの構成方法を指定してください。バンドルされたシンプル クライアントを使用するには、「コンパイルとインストール」の章を参照してください。ブランチ「デバッグクライアント」を使用できます。
デバッグ クライアントが起動すると、次のメッセージが表示され、デバッグ サーバーが接続を受信するのを待ちます:
Xdebug シンプル DBGp クライアント (0.10.0)
著作権 2002-2007 by Derick Rethans。
- libedit サポート: 有効
デバッグサーバーの接続を待機しています。
接続が形成されると、デバッグサーバーは次の情報を出力します:
接続
xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///home/httpd/www.xdebug.org/html/docs/index.php" 言語 = "PHP" protocol_version="1.0" appid="13202" idekey="デリック"> <エンジン バージョン="2.0.0RC4-dev"> <著者>著者>
(cmd)
DBGp に関連するいくつかのコマンドセットを使用できるようになりました。スクリプトの実行が終了すると、デバッグ サーバーはクライアントとの接続を閉じます。デバッグ クライアントは新しい接続の待機を再開します。
通信設定
静的IP/単一開発
リモート デバッグ中、PHP に組み込まれている xdebug がクライアントとして機能し、IDE がサーバーとして機能します。次のアニメーションは、コミュニケーション チャネルの確立を示しています:
不明なIP/複数の開発者
xdebug.remote_connect_back を利用する場合、接続方法は多少異なります:
HTTPデバッグセッション
Xdebug には、Cookie を使用してブラウザ上でトレース デバッグ セッションを開始する機能が含まれています。作業は次の手順と似ています:
Xdebug では、リモート デバッグ中に指定された IP アドレスのみが xdebug.remote_host に接続できます。 xdebug.remote_connect_back を使用しない限り、ブラウザーがテストを実行しているときは、ブラウザーが実行されているマシンの IP に接続し直すことはできません。
開発者が同じ(開発)サーバー上にさまざまなプロジェクトがある場合、Apache の .htaccess 関数を通じて各プロジェクトを設定できますphp_value xdebug.remote_host=10.0.0.5
而使用xdebug.remote_host 设置。
ここでは 2 つの解決策を紹介します。まず、DBGp プロキシを使用できます。使用方法については、「複数ユーザーによるデバッグ」の章を参照してください。エージェント ソフトウェアは、ActiveState の Web サイトで Python リモート デバッグ パッケージの一部としてダウンロードできます。詳しいドキュメントは Komodo FAQ にあります。
2 つ目は、xdebug 2.1 の xdebug.remote_connect_back 設定を使用することです。
xdebug.extended_info
タイプ: 整数、デフォルト値: 1
xdebug が PHP パーサーの「extended_info」モードを強制的にオンにするかどうかを制御します。これにより、Xdebug はリモート デバッグでファイル/行番号のブレークポイント デバッグを実行できるようになります。スクリプトをトレースまたはプロファイリングするときは、PHP によって生成される配列のサイズが 3 分の 1 に増加し、スクリプトの速度が低下するため、通常はこのオプションをオフにする必要があります。この設定は php.ini でのみ設定でき、ini_set() では設定できません。
xdebug.idekey
タイプ: string、デフォルト値: *complex*
どの IDE インデックス値を xdebug によって DBGp デバッグ プロセッサに渡すことができるかを制御します。デフォルトは環境設定に基づいています。最初に環境設定 DBGP_IDEKEY が考慮され、次に USER、最後に USERNAME が考慮されます。デフォルト値は、最初に見つかった環境変数になります。本当に見つからない場合、設定はデフォルトの「」になります。この値が設定されている場合、通常は環境変数値をオーバーライドします。
xdebug.remote_autostart
タイプ: ブール、デフォルト値: 0
一般的に、リモート デバッグを開始するには、指定された HTTP GET/POST 変数を使用する必要があります (リモート デバッグを参照)。 1 に設定すると、GET/POST/COOKIE 変数が存在しない場合でも、Xdebug はリモート デバッグ セッションを開始してクライアントへの接続を試みます。
xdebug.remote_connect_back
タイプ: boolean、デフォルト値: 0、Xdebug > 2.1
以降この設定が有効な場合、xdebug.remote_host 設定は無視され、Xdebug は HTTP リクエストを行っているクライアントへの接続を試みます。 $_SERVER['REMOTE_ADDR'] 変数をチェックし、使用されている IP アドレスを見つけます。効果的なフィルタリングはなく、アドレスが xdebug.remote_host と一致しない場合でも、誰でもデバッグ セッションを開始してサーバーに接続できることに注意してください。
xdebug.remote_cookie_expire_time
タイプ: 整数、デフォルト値: 3600、Xdebug > 2.1
以降リモート デバッグ セッションの Cookie の存在時間を増減するために使用されます。
xdebug.remote_enable
タイプ: ブール、デフォルト値: 0
このスイッチは、xdebug.remote_host と xdebug.remote_port を設定することでサーバーとポートをリッスンするデバッグ クライアントと通信しようとする Xdebug の試行を制御します。 0 に設定すると、スクリプトは実行されるだけですが、接続は確立できません。
xdebug.remote_handler
タイプ: string、デフォルト: dbgp
古い PHP3 スタイルのデバッガー出力を使用する場合は「php3」、デバッガー インターフェイスと同様の GDB を有効にする場合は「gdb」、またはデバッガー プロトコルを使用する場合は「dbgp」に変更できます。 DBGp プロトコルはサポートされている唯一のプロトコルです。
注: バージョン 2.1 以降では、プロトコルとして「dbgp」のみがサポートされます。
xdebug.remote_log
タイプ: string、デフォルト値:
値に設定すると、すべてのリモート デバッガ通信が記録されるファイルのファイル名として使用され、ファイルは常に追加モードで開かれるため、デフォルトでは上書きされません。ファイルの形式は次のようになります:
ログは2007-05-27 14:28:15に開かれました
->