If you find Xdebug useful, please consider supporting the project.

Xdebug 2 から 3 へのアップグレード

English 日本語

このアップグレードガイドは、Xdebug 2から3への変更点と、同様のことを行うようにセットアップを再構成する方法を詳しく説明します。

新しいコンセプト #

各機能の有効化設定があったXdebug 2とは異なり、Xdebug 3では、Xdebugを特定の モード にします。これは xdebug.mode で設定できます。

この設定と xdebug.start_with_request を組み合わせる方法が、Xdebugの機能を有効にし、 機能をアクティブにするタイミングを設定する新しい方法になります。

この背景には、Xdebugが実際に必要な機能のオーバーヘッドのみを持つことが重要であると考えているからです。 たとえば、ProfilingStep Debugging の両方を同時にアクティブにすることは意味がありません。

xdebug.mode を使用してモードを設定する以外に、 XDEBUG_MODE 環境変数を使用してモードを設定することもできます。この環境変数が有効な場合、 xdebug.mode で設定されたモードを上書きします。

Step Debugging のみがアクティブであるようにするには、次の代わりに:

xdebug.remote_enable=1
xdebug.default_enable=0
xdebug.profiler_enable=0
xdebug.auto_trace=0
xdebug.coverage_enable=0

このようにするだけです:

xdebug.mode=debug

もしくはコマンドライン上で:

export XDEBUG_MODE=debug
php script-name.php

ステップデバッギング #

Xdebugの標準のデバッギングポートは 9000 から 9003 へ変更されました。

コマンドラインで有効化する

XDEBUG_CONFIG 環境変数に idekey=yourname を設定する代わりに、XDEBUG_SESSIONyourname を設定する必要があります:

export XDEBUG_SESSION=xdebug_is_great

デバッガーを自動で開始する

xdebug.remote_autostart の設定は削除されました。 代わりに xdebug.start_with_requestyes にセットしてください。

リクエスト中にデバッガーを開始する

Xdebug 3では、 xdebug_break() を呼び出すと、 xdebug.start_with_requesttrigger に設定されている場合にのみデバッグセッションを開始します。

xdebug.start_upon_error=yes の場合、 デバッグセッションがトリガーされなくなります(Xdebug 2 の xdebug.remote_mode=jit の代替です)。

デバッグセッションは、xdebug.start_upon_erroryes に設定されたときは、xdebug.start_with_request の値に関係なく、 PHPのNoticeまたはWarning、またはThrowableがスローされたときに開始されます。

関数の振る舞いの変更

xdebug_break()

この関数は、xdebug.start_upon_erroryes にセットされた場合、 デバッグセッションが開始されなくなりました(Xdebug 2 の xdebug.remote_mode=jit の代替です)。

これはまだ、xdebug.start_with_requesttrigger に設定されている場合は、デバッグ要求を開始します。

構成設定の変更 #

Xdebug 3 では、多くの構成設定を削除および変更しました。 このセクションの一覧は、削除された設定とその置き換えを示します。

xdebug.auto_trace #

xdebug.mode=trace と合わせて xdebug.start_with_request=yes を使用してください。

xdebug.collect_includes #

削除されました。include()require() のファイル名は、 Development HelpersFunction Trace の出力に常に含まれるようになりました。

xdebug.collect_params #

削除されました。引数は、引数名と変数の内容と合わせて、 Development HelpersFunction Trace の出力に常に含まれるようになりました。

xdebug.collect_vars #

削除されました。これは、xdebug_get_declared_vars() 関数との組み合わせでのみ使用されていましたが、これも削除されました。

xdebug.coverage_enable #

xdebug.mode=coverage を使用してください。

xdebug.default_enable #

xdebug.mode=develop を使用してください。

xdebug.extended_info #

代替はありません。 Xdebug は、必要に応じてこのPHPエンジン設定を自動的にオンにします。

xdebug.gc_stats_enable #

xdebug.mode=gcstats を使用してください。

xdebug.gc_stats_output_dir #

一般的な xdebug.output_dir の設定を使用してください。

xdebug.overload_var_dump #

削除されました。xdebug.modedevelop に設定されている場合、PHPの var_dump() は常に xdebug_var_dump() によって上書きされるようになりました。xdebug_var_dump() 関数は、構成されているモードに関係なく使用できます。

xdebug.profiler_enable #

xdebug.mode=profile を使用してください。

xdebug.profiler_enable_trigger #

xdebug.mode=profile と合わせて xdebug.start_with_request=trigger を使用してください。

xdebug.profiler_enable_trigger_value #

一般的な xdebug.trigger_value の設定を使用してください。

xdebug.profiler_output_dir #

一般的な xdebug.output_dir の設定を使用してください。

xdebug.remote_addr_header #

xdebug.client_discovery_header に置き換えられました。

xdebug.remote_autostart #

xdebug.mode=debug と合わせて xdebug.start_with_request=yes を使用してください。

xdebug.remote_connect_back #

xdebug.discover_client_host に置き換えられました。

xdebug.remote_enable #

xdebug.mode=debug を使用してください。

xdebug.remote_handler #

代替はありません。 Xdebugのステップデバッガーは DBGPハンドラー のみをサポートしています。

xdebug.remote_host #

xdebug.client_host に置き換えられました。

xdebug.remote_log #

xdebug.log に置き換えられました。これは Step Debugging 以外のログメッセージも含まれます。

xdebug.remote_log_level #

xdebug.log_level に置き換えられました。

xdebug.remote_mode #

req(元のデフォルト)であれば、xdebug.mode=debugxdebug.start_with_request=trigger を使用します。 元の xdebug.remote_autostart の動作が必要な場合は、trigger の代わりに xdebug.start_with_request=yes を使用してください。

jit であれば、xdebug.mode=debugxdebug.start_upon_error=yes を使用してください。

xdebug.remote_port #

xdebug.client_port に置き換えられました。

デフォルト値は、9000 から 9003 に変更されました。

xdebug.remote_timeout #

xdebug.connect_timeout_ms に置き換えられました。

xdebug.show_mem_delta #

削除されました。メモリ使用量の差異は、現在のフレームの使用量を前のフレームの使用量と比較することで計算できます。

xdebug.trace_output_dir #

一般的な xdebug.output_dir の設定を使用してください。

xdebug.trace_enable_trigger #

xdebug.mode=trace と合わせて xdebug.start_with_request=trigger を使用してください。

xdebug.trace_enable_trigger_value #

一般的な xdebug.trigger_value の設定を使用してください。

関数への変更 #

xdebug_disable()

削除されました。

Xdebugがスタックトレースを表示しないようにするには、xdebug.mode で Xdebug の develop モードを構成しないか、PHPのINI設定の html_errors をオフにします。

xdebug_enable()

削除されました。

スタックトレースを表示するようXdebugを構成するには、xdebug.modedevelop を含めます。

xdebug_get_declared_vars()

削除されました。

この関数が返していた情報は、xdebug_get_function_stack() 関数を介して取得できます。

xdebug_is_enabled()

削除されました。しかし、元々、文書化またはサポートされていませんでした。

変更された定数 #

以下の定数が変更されました:

XDEBUG_PATH_WHITELIST
変更後: XDEBUG_PATH_INCLUDE
XDEBUG_PATH_BLACKLIST
変更後: XDEBUG_PATH_EXCLUDE
XDEBUG_NAMESPACE_WHITELIST
変更後: XDEBUG_NAMESPACE_INCLUDE
XDEBUG_NAMESPACE_BLACKLIST
変更後: XDEBUG_NAMESPACE_EXCLUDE