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 では、多くの構成設定を削除および変更しました。 このセクションの一覧は、削除された設定とその置き換えを示します。
関数への変更 #
変更された定数 #
以下の定数が変更されました: