Xdebug 2 から 3 へのアップグレード
このアップグレードガイドは、Xdebug 2から3への変更点と、同様のことを行うようにセットアップを再構成する方法を詳しく説明します。
新しいコンセプト #
各機能の有効化設定があったXdebug 2とは異なり、Xdebug 3では、Xdebugを特定の モード にします。これは xdebug.mode で設定できます。
この設定と xdebug.start_with_request を組み合わせる方法が、Xdebugの機能を有効にし、 機能をアクティブにするタイミングを設定する新しい方法になります。
この背景には、Xdebugが実際に必要な機能のオーバーヘッドのみを持つことが重要であると考えているからです。 たとえば、Profiling と Step 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_SESSION に yourname
を設定する必要があります:
export XDEBUG_SESSION=xdebug_is_great
デバッガーを自動で開始する
xdebug.remote_autostart の設定は削除されました。 代わりに
xdebug.start_with_request を yes にセットしてください。
リクエスト中にデバッガーを開始する
Xdebug 3では、 xdebug_break() を呼び出すと、 xdebug.start_with_request が
trigger に設定されている場合にのみデバッグセッションを開始します。
xdebug.start_upon_error=yes の場合、
デバッグセッションがトリガーされなくなります(Xdebug 2 の
xdebug.remote_mode=jit の代替です)。
デバッグセッションは、xdebug.start_upon_error が yes
に設定されたときは、xdebug.start_with_request の値に関係なく、
PHPのNoticeまたはWarning、またはThrowableがスローされたときに開始されます。
関数の振る舞いの変更
xdebug_break()-
この関数は、xdebug.start_upon_error が
yesにセットされた場合、 デバッグセッションが開始されなくなりました(Xdebug 2 のxdebug.remote_mode=jitの代替です)。これはまだ、xdebug.start_with_request が
triggerに設定されている場合は、デバッグ要求を開始します。 xdebug.auto_trace#xdebug.mode=
traceと合わせて xdebug.start_with_request=yesを使用してください。xdebug.collect_includes#削除されました。
include()とrequire()のファイル名は、 Development Helpers と Function Trace の出力に常に含まれるようになりました。xdebug.collect_params#削除されました。引数は、引数名と変数の内容と合わせて、 Development Helpers と Function 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.modeがdevelopに設定されている場合、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=debugと xdebug.start_with_request=triggerを使用します。 元のxdebug.remote_autostartの動作が必要な場合は、triggerの代わりに xdebug.start_with_request=yesを使用してください。jitであれば、xdebug.mode=debugと xdebug.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.mode に
developを含めます。 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
構成設定の変更 #
Xdebug 3 では、多くの構成設定を削除および変更しました。 このセクションの一覧は、削除された設定とその置き換えを示します。
関数への変更 #
変更された定数 #
以下の定数が変更されました: