Xdebug ドキュメント (7) リモート デバッグ、xdebug ドキュメントのデバッグ

WBOY
リリース: 2016-07-06 14:25:18
オリジナル
1335 人が閲覧しました

Xdebug ドキュメント (7) リモート デバッグ、xdebug ドキュメントのデバッグ

Xdebug は、デバッグ クライアント インターフェイスが実行中の PHP に接続されていることを要求します。この章では、xdebug を使用して PHP をセットアップする方法を説明し、いくつかのクライアントを推奨します。

はじめに

Xdebug のリモート デバッガーを使用すると、データ構造を検査し、コードをインタラクティブにステップ実行してデバッグできます。このプロトコルはすでにオープンされており、DBGp と呼ばれます。このプロトコルは xdebug2 で実装され、サポートされなくなった古い GDB と同様のプロトコルを置き換えます。

クライアント

Xdebug2 には、DBGp プロトコルを使用するシンプルなコマンド ライン ツールがバンドルされています。他にも良い仕事をするクライアントがいくつかあります (無料または商用)。

  • 開発-PHP (IDE: Windows)
  • Eclipseプラグイン (IDE).
  • Emacs プラグイン (エディタプラグイン).
  • KDevelop (IDE: Linux (KDE); オープンソース)。
  • ActiveState の Komodo (IDE: Windows、Linux、Mac、商用)。
  • MacGDBP (Mac OS X用スタンドアロンクライアント; 無料)
  • NetBeans (IDE: Windows、Linux、Mac OS X、Solaris)。
  • Notepad++ プラグイン (エディタ: Windows)。
  • WaterProof の PHPEdit (IDE、バージョン 2.10 以降: Windows; 商用)。
  • PHPEclipse (エディタープラグイン)。
  • Devsense の Visual Studio 用 PHP ツール (MS Visual Studio プラグイン、商用)。
  • JetBrain の PhpStorm (IDE; 商用)。
  • プロトエディタ (エディタ: Linux)。
  • pugdebug (Linux、Windows、Mac OS X 用のスタンドアロン クライアント、オープン ソース)。
  • VIM プラグイン (エディタプラグイン).
  • jcx ソフトウェアの VS.Php (MS Visual Studio プラグイン; 商用)。
  • Xdebug Chrome アプリ (Chrome アプリケーション; オープンソース)
  • XDebugClient (Windows 用スタンドアロン クライアント)。
デバッグ用の簡単なコマンド ライン ツールは、xdebug が配置されている

ディレクトリにバンドルされています。 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 値が直接設定されます。

最も簡単な Xdebug

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は10.0.1.2、HTTPポート80です
  • IDE が配置されている IP は 10.0.1.42 なので、xdebug.remote_host は 10.0.1.42 に設定されます
  • IDE はポート 9000 でリッスンするため、xdebug.remote_port は 9000 に設定されます
  • HTTP リクエストは、IDE が配置されているマシン上で開始されます。
  • Xdebug は 10.0.1.42:9000 に接続します
  • デバッグが開始され、HTTP 応答が提供されます。

不明なIP/複数の開発者

xdebug.remote_connect_back を利用する場合、接続方法は多少異なります:

  • サーバーIPとHTTPポート10.0.1.2:80
  • IDE が配置されているマシンには不明な IP があるため、xdebug.remote_connect_back は 1 に設定されます。
  • IDE はポート 9000 でリッスンするため、xdebug.remote_port は 9000 に設定されます
  • HTTP リクエストが開始され、Xdebug は HTTP ヘッダーを通じて IP アドレスを取得します。
  • Xdebug接続で取得したIP(10.0.1.42)はポート9000にあります
  • デバッグが実行され、HTTP が応答を返します。

HTTPデバッグセッション

Xdebug には、Cookie を使用してブラウザ上でトレース デバッグ セッションを開始する機能が含まれています。作業は次の手順と似ています:

  • URL 変数 XDEBUG_SESSION_START=name が URL に追加されるか、同じ名前の値が POST を通じて渡されると、Xdebug は Cookie 値「XDEBUG_SESSION」を発行し、この値は URL パラメーター XDEBUG_SESSION_START の値になります。 Cookie の値は 1 時間有効です。 DBGp プロトコルは、デバッグ クライアントに接続するときに、最初のパケット内の「idekey」属性にも同じ値を渡します。
  • XDEBUG_SESSION_START または XDEBUG_SESSION cookie 設定されると、Xdebug はデバッグ クライアントへの接続を試みます。
  • デバッグ セッションを停止 (および付随する Cookie を破棄) するには、URL パラメーター XDEBUG_SESSION_STOP を追加するだけです。 Xdebug は、高度なデバッグ クライアントへの接続の作成を試行しなくなります。

マルチユーザーデバッグ

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、デフォルト値: 0Xdebug > 2.1

以降

この設定が有効な場合、xdebug.remote_host 設定は無視され、Xdebug は HTTP リクエストを行っているクライアントへの接続を試みます。 $_SERVER['REMOTE_ADDR'] 変数をチェックし、使用されている IP アドレスを見つけます。効果的なフィルタリングはなく、アドレスが xdebug.remote_host と一致しない場合でも、誰でもデバッグ セッションを開始してサーバーに接続できることに注意してください。

xdebug.remote_cookie_expire_time

タイプ: 整数、デフォルト値: 3600Xdebug > 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に開かれました

->

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート