Xdebug ドキュメント (4) 関数追跡、xdebug ドキュメント関数追跡_PHP チュートリアル
Xdebug ドキュメント (4) 関数追跡、xdebug ドキュメント関数追跡
Xdebug を使用すると、パラメーターや戻り値を含むすべての関数呼び出しをさまざまな形式のファイルに記録できます。
これらのいわゆる「関数トレース」機能は、新しいアプリケーションに直面したり、プログラムが実行中に何をしているかを把握したい場合に役立ちます。関数トレースでは、関数またはメソッドによって渡された変数の値と戻り値をオプションで表示できます。これら 2 つの要素の追跡は、デフォルトでは有効になっていません。
出力形式
3つの出力形式があります。 1 つは人間が判読できる追跡情報を持ち、もう 1 つはコンピュータ プログラムによる解析に適しており、最後は HTML を使用して追跡情報をフォーマットします。 xdebug_trace_format 設定を使用すると、これら 2 つの不適切な形式を切り替えることができます。トレース ファイルに書き込む情報を制御する設定もあります。たとえば、変数 (xdebug.collect_params) と戻り値 (xdebug.collect_return) を設定します。次の例は、人間が判読できる関数トレース情報のさまざまな設定の影響を示しています。
スクリプトリーリー
以下は、xdebug.collect_params が異なる値に設定された場合の結果です。 Web 環境ではない場合、値 2 にはマウス プロンプトは含まれません。
デフォルト値:
トレース開始 [2007-05-06 14:37:06]
0.0003 114112 -> {main}() ../trace.php:0
0.0004 114272 -> str_split() ../trace.php:8
0.0153 117424 -> ret_ord() ../trace.php:10
0.0165 117584 -> ord() ../trace.php:5
0.0166 117584 -> ret_ord() ../trace.php:10
0.0167 117584 -> ord() ../trace.php:5
0.0168 117584 -> ret_ord() ../trace.php:10
0.0168 117584 -> ord() ../trace.php:5
0.0170 117584 -> ret_ord() ../trace.php:10
0.0170 117584 -> ord() ../trace.php:5
0.0172 117584 -> ret_ord() ../trace.php:10
0.0172 117584 -> ord() ../trace.php:5
0.0173 117584 -> ret_ord() ../trace.php:10
0.0174 117584 -> ord() ../trace.php:5
0.0177 41152
トレース終了 [2007-05-06 14:37:07]
Collect_params=1:
リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー
Collect_params=3:リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー
Collect_params=4:リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー
xdebug.collet_params 設定に加えて、トレース ファイルの出力に影響を与える他の設定があります。 「show_mem_delta=1」は、2 つの異なる列でメモリ使用量を表示できます。リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー
「collect_return=1」は、呼び出された関数の戻り値を表示します。リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー
「collect_assignments=1」は変数の割り当てを表示します。詳細については、xdebug.collect_assignments 設定を参照してください。
「xdebug.trace_format」設定は出力形式を変更して、解析しやすくしますが、理解しにくくします。これは、サードパーティ ツールを使用してトレース ファイルを解析する場合に最も役立ちます。
リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー
VIM 構文ファイル
Xdebug には、追跡ファイルの構文を強調表示するための VIM 構文ファイルが含まれています。構文ファイル名は xt.vim です。 VIM が新しい形式を認識するには、これを行う必要があります:
リーリー リーリー リーリー
これを実行すると、開いた追跡ファイルは次のようになります:
<strong>TRACE START</strong> <strong>[2007-05-15 20:06:02]</strong>
0.0003 115208 <strong>-></strong> <strong>{main}()</strong> ../trace.php<strong>:0</strong>
0.0004 115368 <strong>-></strong> <strong>str_split() </strong>../trace.php<strong>:8</strong>
0.0006 118520 <strong>-></strong> <strong>ret_ord() </strong>../trace.php<strong>:10</strong>
0.0007 118680 <strong>-></strong> <strong>ord() </strong>../trace.php<strong>:5</strong>
0.0008 118680 <strong>-></strong> <strong>ret_ord() </strong>../trace.php<strong>:10</strong>
0.0009 118680 <strong>-></strong> <strong>ord() </strong>../trace.php<strong>:5</strong>
0.0010 118680 <strong>-></strong> <strong>ret_ord() </strong>../trace.php<strong>:10</strong>
0.0010 118680 <strong>-></strong> <strong>ord() </strong>../trace.php<strong>:5</strong>
0.0012 118680 <strong>-></strong> <strong>ret_ord() </strong>../trace.php<strong>:10</strong>
0.0012 118680 <strong>-></strong> <strong>ord() </strong>../trace.php<strong>:5</strong>
0.0014 118680 <strong>-></strong> <strong>ret_ord() </strong>../trace.php<strong>:10</strong>
0.0014 118680 <strong>-></strong> <strong>ord() </strong>../trace.php<strong>:5</strong>
0.0016 118680 <strong>-></strong> <strong>ret_ord() </strong>../trace.php<strong>:10</strong>
0.0016 118680 <strong>-></strong> <strong>ord() </strong>../trace.php<strong>:5</strong>
0.0019 54880
<strong>TRACE END</strong> <strong>[2007-05-15 20:06:02]<br></strong>
相关设置:
xdebug.auto_trace
类型: boolean, 默认值: 0
打开此设置时,脚本在运行前函数调用追踪将开启。这将可能追踪auto_prepend_file设置的代码文件。
xdebug.collect_assignments
类型: boolean, 默认值: 0, 始于 Xdebug > 2.1
用于控制xdebug是否添加变量赋予到函数追踪当中。
xdebug.collect_includes
类型: boolean, 默认值: 1
用于控制xdebug是否将include(), include_once(), require() 或 require_once() 引用的文件名写入到跟踪文件中。
xdebug.collect_params
类型: integer, 默认值: 0
默认为0时,该设置控制xdebug不管是函数追踪还是堆栈跟踪都会收集调用函数的参数。
默认0值是考虑到大规模脚本会占用大量内存,所以不会为了大脚本来运行它。你可以安全地打开此设置,但你会预料到会一些脚本上的问题像大量函数调用兼庞大的数据结构作为参数传递。Xdebug2不会有增加内存使用的问题,因为它不会存储到内存,而是只存入磁盘中。这只需要你有足够的磁盘使用量即可。
该设置有4种设置值。每种都会呈现不同的信息。以下表格展示各种设置值信息:
Value |
Argument Information Shown |
0 |
无. |
1 |
展示变量元素的值类型和值。 |
2 |
展示变量元素的值类型和值,并附带滑鼠提示显示完整信息。(CLI模式下不存在滑鼠提示) |
3 |
完整变量内容(内容受限于以下设置: xdebug.var_display_max_children,xdebug.var_display_max_data and xdebug.var_display_max_depth.) |
4 |
完整变量内容和名称。 |
5 |
PHP 序列化变量内容,不含名称。(2.3版本新特性) |
xdebug.collect_return
タイプ: ブール、デフォルト値: 0
関数呼び出しの戻り値をトレース ファイルに書き込むかどうかを制御します。
コンピューター化されたトレース ファイル (xdebug.trace_format=1) を実現するには、Xdebug 2.3 以降を使用する必要があります。
xdebug.show_mem_delta
タイプ: 整数、デフォルト値: 0
この設定が 0 以外の場合、手動で読み取ることができるトレース ファイルには、各関数呼び出しによって占有されるメモリ量の違いが表示されます。 xdebug がコンピューターで読み取り可能なトレース ファイルを生成するように設定されている場合、常に次のような情報が表示されます。
xdebug.trace_enable_trigger
タイプ: boolean、デフォルト値: 0、Xdebug > 2.2
以降1 に設定すると、XDEBUG_TRACE GET/POST パラメーターを使用するか、XDEBUG_TRACE という名前の Cookie 値を設定して、追跡ファイルの生成をトリガーできます。追跡データ ファイルは、事前定義されたフォルダーに書き込まれます。 xdebug がリクエストごとにトレース ファイルを生成しないようにするには、xdebug.auto_trace を 0 に設定する必要があります。トリガー自体には、xdebug.trace_enable_trigger_value を設定することでアクセスできます。
xdebug.trace_enable_trigger_value
タイプ: string、デフォルト値: ""、Xdebug > 2.3
以降この設定は、xdebug.trace_enable_trigger で説明されている XDEBUG_TRACE 関数を利用できる人を制限するために使用されます。デフォルトの null 値から変更する場合、Cookie、GET、または POST の値が、トレース ファイル用に生成された設定の共有非表示設定と一致する必要があります。
xdebug.trace_format
タイプ: 整数、デフォルト値: 0
トラックファイル形式。
価値 |
説明 |
0 |
人間が判読できる形式のファイルを表示します: 時点、メモリ量、メモリ デルタ (xdebug.show_mem_delta がオンの場合)、レベル、関数名、関数パラメータ (xdebug.collect_params がオンの場合)、ファイル名、行番号。 |
1 |
2 つの異なるレコードを使用して、コンピューター可読形式のファイルを作成します。レコードの違いは、一方はスタック境界を挿入し、もう一方はスタック境界を削除することです。次の表に、レコード内の各フィールドの違いを示します。 |
2 |
HTMLを使用して追跡ファイルを作成します。 |
コンピュータ化された形式のフィールド:
レコードタイプ |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 - ... |
エントリー |
レベル |
関数# |
常に「0」 |
タイムインデックス |
メモリ使用量 |
関数名 |
ユーザー定義 (1) または内部関数 (0) |
インクルード/必須ファイルの名前 |
ファイル名 |
行番号 |
パラメータの数 |
パラメータ (フィールド 11 で指定した数) - タブ区切り |
出口 |
レベル |
関数# |
常に「1」 |
タイムインデックス |
メモリ使用量 |
空 |
||||||
戻る |
レベル |
関数# |
常に「R」 |
空 |
戻り値 |
空 |
xdebug.trace_options
タイプ: 整数、デフォルト値: 0
1 に設定すると、追跡ファイルは後続のリクエストでコンテンツを直接上書きするのではなく、後でコンテンツを追加します。
xdebug.trace_output_dir
タイプ: string、デフォルト値: /tmp
ファイル書き込みパスをトレースし、PHP の実行時にユーザーがディレクトリへの書き込み権限を持っていることを確認します。
xdebug.trace_output_name
タイプ: string、デフォルト値: trace.%c
この設定は、追跡情報が書き込まれるファイル名を決定します。この設定では、sprintf() や strftime() と同様の形式識別子を使用します。 ファイル名のフォーマットには、いくつかのフォーマット識別子を使用できます。接尾辞「.xt」がファイル名に自動的に追加されます。
フォーマットされた識別子のリスト:
識別子 |
意味 |
フォーマット例 |
ファイルの例 |
%c |
現在の作業パスのCrc32検証値 |
トレース.%c |
trace.1258863198.xt |
%p |
プロセス識別子 |
トレース.%p |
trace.5174.xt |
%r |
乱数 |
トレース.%r |
trace.072db0.xt |
%s |
スクリプト名2 |
cachegrind.out.%s |
cachegrind.out._home_httpd_html_test_xdebug_test_php |
%t |
制限時間(秒) |
トレース.%t |
trace.1179434742.xt |
%u |
タイムカットオフ (マイクロ秒) |
トレース.%u |
trace.1179434749_642382.xt |
%H |
$_SERVER['HTTP_HOST'] |
トレース.%H |
trace.kossu.xt |
%R |
$_SERVER['REQUEST_URI'] |
トレース.%R |
trace._test_xdebug_test_php_var=1_var2=2.xt |
%U |
$_SERVER['UNIQUE_ID'] 3 |
トレース.%U |
trace.TRX4n38AAAEAAB9gBFkAAAAB.xt |
%S |
session_id (ソース $_COOKIE、設定されている場合) |
トレース.%S |
trace.c70c1ec2375af58f74b390bbdd2a679d.xt |
%% |
リテラル % |
トレース.%% |
トレース.%%.xt |
2 これはファイル名の追跡には使用できません。
3 バージョン 2.2 の新機能。この機能は、Apache mod_unique_id モジュールによって設定されます。
xdebug.var_display_max_children
タイプ: 整数、デフォルト値: 128
この設定は、xdebug_var_dump()、xdebug.show_local_vars、またはトレース関数を使用するときの配列要素の数とオブジェクト プロパティの表示を制御します。
制限されていない場合は、-1の値に設定できます。
この設定は Remot_Debuggin の影響を受けません。
xdebug.var_display_max_data
タイプ: 整数、デフォルト値: 512
この設定は、xdebug_var_dump()、xdebug.show_local_vars、またはトレース関数を使用するときに表示される文字列の最大長を制御します。
制限されていない場合は、-1の値に設定できます。
この設定は Remot_Debugging の影響を受けません。
xdebug.var_display_max_ Depth
タイプ: 整数、デフォルト値: 3
この設定は、xdebug_var_dump()、xdebug.show_local_vars、またはトレース関数を使用するときの配列要素とオブジェクト プロパティの表示レベルを制御します。
最大値は 1023 です。-1 に設定して最大値を示すことができます。
この設定は Remot_Debugging の影響を受けません。
関連機能:
文字列 xdebug_get_tracefile_name()
現在のトレース出力のスクリプト ファイル名を返します。この機能は、xdebug.auto_trace がオンの場合に使用できます。
void xdebug_start_trace( string trace_file [, 整数オプション] )
新しい機能の追跡を開始します
特定の時点で、パラメータ trace_file で指定されたファイルにマージされた関数 トレースが開始されます。ファイル名が指定されていない場合、トレース ファイルは xdebug.trace_output_dir 設定で指定されたディレクトリに保存されます。最初の引数でファイル名を指定すると、その名前は現在の作業ディレクトリを基準にしたものになります。ただし、現在の作業ディレクトリは予期したものと異なる場合があるため、ファイル名を指定するときは絶対ディレクトリを指定することをお勧めします。 PHP 関数 getcwd() は、現在の作業ディレクトリを指すことができます。
トレースファイル名は通常「{trace_file}.xt」です。 xdebug.auto_trace がオンになっている場合、ファイル名「{filename}.xt」の「{filename}」部分は、xdebug.trace_output_name の設定によって決定されます。パラメーター オプションはビット値であり、次の 3 つのオプションがあります:
XDEBUG_TRACE_APPEND (1)
トレースファイルを上書きモードではなく追加モードで開くようにします。
XDEBUG_TRACE_COMPUTERIZED (2)
「xdebug.trace_format」で記述される形式のトレースファイルを作成します。
XDEBUG_TRACE_HTML (4)
追跡ファイルをHTML形式で作成します。
XDEBUG_TRACE_NAKED_FILENAME (8)
一般的に、Xdebug は、指定した最初のパラメータのファイル名の末尾に「.xt」を追加します。 XDEBUG_TRACE_NAKED_FILENAME オプションを使用すると、「.xt」は追加されません (Xdebug 2.3 の新機能)。
Xdebug 1 とは異なり、Xdebug 2 は関数の呼び出し時にメモリを占有しません。ですが、ディスクに書き込まれ、メモリ使用量の圧迫が軽減されます。 xdebug.collect_includes、xdebug.collect_params、xdebug.collect_return などの設定はトレース ファイルに記録される情報の種類に影響し、xdebug.trace_format はファイル情報の形式に影響します。
void xdebug_stop_trace()
関数呼び出しのトレースを停止し、トレース ファイルを閉じます。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









はい、XDebug のようなデバッガーは PHP サーバーのパフォーマンスを低下させる可能性があります。これが、デバッガがサーバー環境に配置されない理由です。不要なオーバーヘッドを避けるために、これらは異なる環境にデプロイされます。デバッグ メッセージは、すでに運用されているアプリケーションでは表示できません。デバッグ動作がサーバーに追加されると、デバッグ エンジンが PHP プロセスに接続されます。ブレークポイントで停止するためにメッセージの受信を開始しますが、他のプロセスにパフォーマンスに影響を与え、PHP パーサーを停止する可能性があるため、これは必須の動作ではありません。一方、デバッガーは実稼働環境での使用を目的としていないため、インストールされる場合はサーバーでポートを開く傾向があります。サーバーのポートを開くことは、ハッカーがのぞき見するためのドアを開けるのと同じくらい悪いことです。

デバッグは PHP 開発において避けられない部分です。開発者が独自のコードをより簡単にデバッグできるようにするために、PHP8.0 では、デバッグ ライブラリに非常に便利なツールである Xdebug が導入されました。この記事では、Xdebug の主な機能のいくつかと、Xdebug を使用して PHP デバッグのプロセスを簡素化する方法を紹介します。 Xdebug は、PHP アプリケーションのエラーをキャプチャし、詳細なエラー スタック トレース情報と使用されている変数を提供できるオープン ソースのデバッグ ツールです。開発者がコードを検出してトラブルシューティングを行うのに役立ちます

ThinkPHP6 は、開発をより便利にするためにさまざまなテクノロジーを使用する人気のある PHP フレームワークです。そのようなテクノロジーの 1 つは、Xdebug などのデバッグ ツールです。この記事では、ThinkPHP6 でのデバッグに Xdebug を使用する方法を説明します。 Xdebug のインストールと構成 Xdebug の使用を開始する前に、まず Xdebug をインストールして有効にする必要があります。 php.ini ファイルに次の設定を追加できます: [xdebug]zend_extension=x

PHP は、Web 開発で広く使用されているプログラミング言語です。 PHP 開発ツールの場合、適切なツールを選択することで、開発者の作業をより効率的かつ便利にすることができます。この記事では、統合開発環境 (IDE)、テキスト エディター、デバッグ ツールなど、いくつかの一般的な PHP 開発ツールについて説明します。 1. 統合開発環境 (IDE) PhpStorm PhpStorm は、JetBrains によって開発された強力な PHP 開発環境です。 PHをサポートするだけではありません

効率的なデバッグとパフォーマンスの最適化のために PHP 拡張機能 XDebug を使用する方法 PHP アプリケーションを開発およびデバッグするとき、不正な呼び出し、非効率的なコード、パフォーマンスのボトルネックなど、さまざまな問題に遭遇することがよくあります。 XDebug は、これらの問題を迅速に特定、デバッグ、最適化するのに役立つ強力な PHP 拡張機能です。この記事では、XDebug を使用して効率的なデバッグとパフォーマンスの最適化を行う方法を紹介し、いくつかのコード例を示します。 XDebug のインストールと構成 まず、XDebug をインストールする必要があります

PHP 開発者は、開発プロセス中にデバッグやテストの問題に遭遇することがよくあります。これらの問題に対処するには、デバッグとテストを改善するためにいくつかのツールを使用できます。その中でも、Xdebug と PHPUnit は、PHP 開発者にとって不可欠な 2 つのツールです。この記事では、ブレークポイントデバッグや単体テストの使い方など、XdebugとPHPUnitの基本的な使い方を紹介します。 Xdebug は、PHP 用のデバッガーおよびアナライザーです。 byX

1. PHP サーバーの最適化の概要 PHP サーバーの最適化とは、サーバー構成の調整、PHP コードの最適化、キャッシュの使用によって PHP サーバーのパフォーマンスと安定性を向上させることを指します。一般的な最適化方法は次のとおりです。 1. PHP コードの最適化 PHP コードの最適化は、PHP サーバーのパフォーマンスを向上させる最も直接的な方法の 1 つです。 PHP コードを最適化する方法には、以下が含まれます。 より高速なアルゴリズムとデータ構造を使用して不必要なデータベース クエリを回避し、キャッシュ手法を再利用してパフォーマンスを向上させる コード分析ツールを使用してパフォーマンスのボトルネックを見つける 2. PHP サーバー構成を最適化する PHP サーバー構成を最適化すると、パフォーマンスも向上します PHP サーバーのパフォーマンスも向上しますそして安定性。 PHP サーバー構成を最適化する方法には、PHP メモリ制限の増加、PHP プロセス数の調整、および最適化などがあります。

PHP は、Web アプリケーションの開発に広く使用されているオープンソース スクリプト言語です。 Xdebug は、多くの強力な機能を提供する優れた PHP デバッグ ツールで、大規模な Web アプリケーションの開発とデバッグに非常に適しています。この記事では、Xdebug の概念と、Xdebug を使用して PHP コードをデバッグする方法を紹介します。 1.Xdebugとは何ですか? PHP 開発中、開発者は多くの場合、エラーを排除するためにデバッグが必要になります。 Xdebug は優れた PHP デバッグです
