ホームページ >バックエンド開発 >PHPチュートリアル >PHP デバッグ ツール XDebug_PHP のインストールと使用方法のチュートリアル
多くの PHP プログラマはデバッグに echo、print_r()、var_dump()、printf() などを使用しますが、豊富な開発経験を持つプログラマにとってはこれらで十分ですが、多くの場合、特定の変数の値を出力することで、プログラムが正しく実行されているかどうか、さらに効率も確認できます (もちろん、いくつかの時間関数を使用する必要がある場合もあります)。では、なぜプログラムの動作を監視するために特別なデバッガが必要なのでしょうか?
通常の PHP 開発では、大規模なプロジェクトを長期間蓄積すると、パフォーマンスがどんどん遅くなり、どこでパフォーマンスが消費されるかが頭の痛い問題になることがよくあります。関数 b() が呼び出されたとき、どのくらいの時間が費やされたのでしょうか?ここでは、多くの人が聞いたことがあると思う xdebug というツールを紹介したいと思います。このツールを使用すると、PHP プログラムのパフォーマンスのボトルネックを簡単に分析できます。
XDebugとは
XDebug は、PHP プログラムの実行ステータスを追跡、デバッグ、分析するために使用できるオープン ソースの PHP プログラム デバッガー (つまり、デバッグ ツール) です。
XDebugをインストールする
php_xdebug.dll をダウンロードし、バージョン番号に従ってオペレーティング システムと PHP バージョンに適したものをダウンロードします。
ダウンロードした php_xdebug.dll を PHP インストール ディレクトリ phpext に配置します。
php.ini を編集します。 一部の収集環境には独自の xdebug 構成がある場合は、次の行を手動で追加します。
1 [xデバッグ]
3 xdebug.auto_trace = オン
4 xdebug.auto_profile = オン
5 xdebug.collect_params = オン
6 xdebug.collect_return = オン
7 xdebug.profiler_enable = オン
8 xdebug.trace_output_dir = "/home/ad/xdebug_log"
9 xdebug.profiler_output_dir = "/home/ad/xdebug_log"
XDebug パラメータの概要:
zend_extension は xdebug 拡張機能をロードします
xdebug.auto_trace は関数呼び出しの監視を自動的にオンにします
xdebug.auto_profile はパフォーマンス監視を自動的にオンにします
xdebug.trace_output_dir は、関数呼び出し監視情報の出力ファイルへのパスを設定します。
xdebug.profiler_output_dir は、性能監視情報出力ファイルのパスを設定します。
xdebug.collect_params は「関数パラメータ」を収集する機能をオンにします。関数呼び出しのパラメータ値を関数プロシージャ呼び出しの監視情報に含めます。
xdebug.collect_return は「関数の戻り値」を収集する機能をオンにします。関数手続き呼び出しの監視情報には関数の戻り値を含めます。
Apacheを再起動します。
の内容を含む test.php を記述します。出力内容に xdebug が表示されれば、インストールと構成は成功しています。または、/home/ad/xdebug_log に移動して、ログが出ているかどうかを確認します。
オプションを設定する
カテゴリ設定の説明
xdebug.trace_output_dir
ログ追跡出力ディレクトリ
xdebug.trace_output_name ログ ファイル名。xdebug は、対応する形式でファイル名を生成するための一連の識別子を提供します。詳細については、公式 Web サイトを参照してください
xdebug.trace_options レコードがファイルに追加される方法: 1 = 追加 (ファイルが存在する場合) 0 (デフォルト) = 上書き (ファイルが存在する場合)
表示データ xdebug.collect_params ゼロ以外の値 = 制御関数のパラメータ表示オプション
1 = パラメーターのタイプ、値 (例: array(9))。
2 = 1 と同じですが、CLI モードでは若干異なります
3 = すべての変数コンテンツ
4 = すべての変数の内容と変数名 (例: array(0 => 9))。
xdebug.collect_return 1 = 関数の戻り値を表示します。デフォルトでは 0 は表示されません
xdebug.collect_vars 1 = 現在のスコープで使用されている変数を表示し、変数名を表示します。必要に応じて、xdebug.collect_params を使用します。
xdebug.collect_assignments 1 = 変数の割り当てを表示する行を追加します (1 の場合、$a = 1 の形式になります。このタイプの割り当て式はトレース ファイルに表示されます)
形式 xdebug.trace_format 0 = 人間が判読可能。左から右に、各列は時点、メモリ、メモリ差分 (xdebug.show_mem_delta=1 を設定する必要がある)、レベル、関数名、関数パラメータ (xdebug.show_mem_delta=1 を設定する必要がある) を表します。 collect_params =1 (ゼロ以外である限り)、現在のコード行のファイル名、および行番号。
1 = マシン読み取り可能[1]。xdebug トレース ファイル パーサーや xdebug トレース ビューアーなどのサードパーティ アプリが必要です
2 = html形式、つまりテーブル、ブラウザで開き、テーブルを表示します
xdebug.show_mem_delta 1 = 各関数呼び出しのメモリ消費量 (メモリの差分) を表示します
動作 xdebug.auto_trace 1 = 自動トレースをオンにします (2 つのトレース方法があり、1 つは自動トレースで、すべての PHP スクリプトは実行時にトレース ファイルを生成します。もう 1 つは次のようにトリガーされたトレースです)。
xdebug.trace_enable_trigger[2] 1 = XDEBUG_TRACE GET/POST を使用してトレースをトリガーするか、Cookie XDEBUG_TRACE を設定します。リクエストごとに対応するトレース ファイルが生成されないようにするには、auto_trace を 0 に設定する必要があります
。
注: この機能はバージョン 2.2 以降でのみ設定できます
[xdebug-general] Re:trace_enable_trigger は機能しませんか?
xdebug.var_display_max_ Depth 配列とオブジェクト要素の表示深度を制限します。主に要素コンテンツの複数のレベルを表示するために配列のネストとオブジェクト属性のネストで使用されます。
xdebug.var_display_max_data 変数値が文字列の場合に表示する長さ。デフォルトは 512.
。
xdebug.var_display_max_children 表示される配列およびオブジェクト要素の数。デフォルトは 128
。
いくつかのカスタム関数
機能の説明
void xdebug_enable() を手動で開きます。xdebug.default_enable=on と同等です
void var_dump()はphpが提供するvar_dumpを上書きします。エラー発生時に関数スタック情報が表示されます(前提条件:php.iniのhtml_errorsが1)
を上書きするかどうかを設定します。
void xdebug_start_trace(
文字列トレースファイルパス
[, 整数オプション] ) トレースする必要があるコードセグメントを手動で制御します
trace_file_path: ファイル パス (空の場合は相対または絶対)。 空の場合、またはパラメーターが渡されない場合は、xdebug.trace_output_dir
で設定されたディレクトリを使用します。
オプション:
XDEBUG_TRACE_APPEND: 1 = ファイル コンテンツの末尾に追加、0 = ファイルを上書きします
XDEBUG_TRACE_COMPUTERIZED:
2 = xdebug.trace_format=1 と同じ。
XDEBUG_TRACE_HTML: 4 = 出力 HTML テーブル、ブラウザーはテーブルとして開きます
void xdebug_stop_trace() はトレースを停止し、コードのトレースはこの行で停止します
string xdebug_get_tracefile_name() は、xdebug.auto_trace.
で使用される出力ファイル名を取得します。
void xdebug_var_dump([mixed var[,...]]) 出力変数の詳細。PHP の var_dump に相当します。具体的な表示については、ここを参照してください
xdebug.show_local_vars のデフォルトは 0 で、表示されません。ゼロ以外の場合、PHP の実行でエラーが発生すると、エラー コードの範囲内のすべてのローカル変数が表示されます (注: これにより、大量の情報が生成されるため、デフォルトは閉じています)。具体的な表示の違いは次のとおりです[3]
array xdebug_get_declared_vars() は、現在のスコープで宣言された変数を表示します
array xdebug_get_code_coverage() は、コードの特定のセクションで実行されるコード行を表示します[4]
xdebug.trace_format=1 に関して、トリガー モードを使用してコード トレースを有効にする場合: (xdebug.auto_trace = 0;xdebug.trace_enable_trigger = 1)、XDEBUG_TRACE を URL に追加できます (例: localhost/test.php?)。 XDEBUG_TRACE 、または localhost//test.php?XDEBUG_TRACE=1 (任意の値)。
それが面倒だと思うなら、プラグインをインストールして助けてください。 Chrome XDEBUG Helper を使用すると、無効、デバッグ有効、プロファイリング有効 (次の記事で詳しく説明します) の 3 つの状態に切り替えてから、デバッグ有効に切り替えることができます。スクリプトを実行すると (URL から ?XDEBUG_TRACE を削除します)、コードを追跡できます。
xdebug_start_trace() と xdebug_stop_trace() を使用して、コードの実行を手動でトレースします。
1 xdebug_start_trace();
2 //トレースするにはコードが必要です3 xdebug_stop_trace();
xdebug.auto_trace = 1 に設定すると、すべての PHP スクリプトを実行する前に自動トレースが有効になります。あるいは、コードを通じて xdebug.auto_trace = 0 を設定し、xdebug_start_trace() 関数と xdebug_stop_trace() 関数をそれぞれ使用してトレースを有効または無効にすることもできます。ただし、xdebug.auto_trace が 1 の場合、構成された auto_prepend_file を含める前にトレースを開始できます。
オプション xdebug.trace_ouput_dir および xdebug.trace_output_name は、トレース出力の保存場所を制御します。ここでは、すべてのファイルが /tmp/traces に保存され、各トレース ファイルは、trace で始まり、PHP スクリプトの名前 (%s) とプロセス ID (%p) が続きます。すべての Xdebug トレース ファイルは .xt 接尾辞で終わります。
デフォルトでは、XDebug は時間、メモリ使用量、関数名、関数呼び出しの深さのフィールドを表示します。 xdebug.trace_format が 0 に設定されている場合、出力は人間が判読できる形式になります (パラメーターを 1 に設定すると、機械が判読できる形式になります)。さらに、xdebug.show_mem_delta = 1 を指定するとメモリ使用量が増加しているか減少しているかを確認でき、xdebug.collect_params = 4 を指定すると渡されたパラメータの型と値を確認できます。各関数から返される値を監視するには、xdebug.collect_return = 1 を設定します。