Xdebug3.xでProfilerを動かす雑な設定

Profilerを動かす

偶然にも関わっているお仕事で「APIあたりのレスポンスタイムがよろしくない」という事象にぶち当たり「Profilerで確認してくれない?」というリーダーからのお達しが別のメンバーに来たものの「設定をしたことがない」というので私の方でProfilerの設定を調べました。

せっかくなので動作した設定をここに記しておきます。

設定

xdebug.mode=profile
xdebug.start_with_request=trigger
xdebug.trigger_value=""

簡単に説明します。

mode

xdebug.mode=profile

modeでXdebugの各種動作モードを設定します。

Profilerの場合、時間などを計測しているので、もしかしたら他の機能は削除した方が良いかもしれないです。

start_with_request

xdebug.start_with_request=trigger

start_with_requestはリクエストが来たときにスタートするタイミングを設定します。

valueとしては3つ。

  • yes
  • リクエスト開始と共に自動で開始
  • no
  • 何もしない設定。ただし、xdebug_start_trace()やxdebug_break()でトレースは可能。リクエストで無条件では何もしないということ。
  • trigger
  • Cookie等にトリガー用のパラメーターが存在すれば動作する。パラメーターにはXDEBUG_PROFILE/XDEBUG_TRACE/XDEBUG_SESSION/XDEBUG_SESSION_START等があり、それぞれの機能に紐付く

trigger_value

xdebug.trigger_value=""

valueが設定してあれば、リクエスト時にそれを指定して動作させることが可能になります。

参考のように空の場合、XDEBUG_PROFILE={任意の値}のように好きな値を設定できます。おそらくこの挙動は「値が設定されたらトリガーオン!」ということだと思います。

コンバート表

以前の設定 新しい設定
profiler_enable_trigger xdebug.mode=profileかつxdebug.start_with_request=trigger
profiler_enable_trigger_value trigger_value

Xdebug Helper

リクエストトリガーの設定はブラウザの場合、各種ブラウザ向けの拡張機能が使えます。

拡張に関してはPhpStormのマニュアルにまとまっているのでリンク先を参照してください。

ブラウザーのデバッグ拡張機能

(ちなみにMicrosoft Edge用にはすでにMicrosoft Storeでも公開されてました)。

Xdebug2.xからXdebug3.xの設定コンバートについては

ここに書かれていないXdebug2.xからXdebug3.xの雑な設定コンバートに関しては1つ前の記事もゼヒ参照してください。

Xdebug3.0.0がリリースされたので、ver2からの雑な設定コンバート

以上。

Xdebug3.0.0がリリースされたので、ver2からの雑なコンバート

Xdebug 3.0.0 is out!

11/25にXdebug 3.0.0 is out!されたわけですが、pecl install xdebugと記載していて、まんまと勝手にver3がインストールされてしまい、まんまと以前の設定で動かず焦っている今日この頃ですが皆さんいかがお過ごしでしょうか?

そんなわけで、私が使用している設定をコンバートし、ひとまず変更を加えて動くところまで雑にやって、雑にまとめました。

mode設定

ver2.x系でとりあえずステップデバッグを使うためには、下記の設定を行っていたと思います。いや、むしろこれがほぼすべてと言ってもよいくらい。

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

ver3.x系では

xdebug.mode=debug

となります。

modeにいくつかの設定が集約されたようで、そのvalueの記載でフラグを管理していく感じです。

以前の設定とmodeのvalueのコンバートはこう。

以前の設定 modeのvalue
default_enable develop
profiler_enable profile
remote_enable debug

同時に設定したい場合はvalueをカンマ区切り。

xdebug.mode=develop,debug

その他コンバートが必要だったもの

xdebug.remote_autostartを設定する場合、下記の2つを設定するようです。

  • xdebug.mode=debug
  • xdebug.start_with_request=yes.

だいたいの人が必要そうな設定はこちらです。

以前の設定 新しい設定
profiler_output_dir output_dir
remote_host client_host
remote_port client_port

output_dir系はoutput_dirにまとめられたっぽいです。

ここまでの設定でブレークポイントまでは動かすことができました。

ポート番号

私はポートを指定していたので引っかからなかったのですが、デフォルトのポート番号が9003へ変更になっています。

参考

参考にしたのは公式ドキュメント。
結局、必要な設定を検索しながらポチポチ地道に書き換えていくしかなさそうです。

動いたini

最期にXdebugが動作したiniを記載しておきます。
開発環境はPhpStormで、Dockerサーバーです。

xdebug.idekey=PHPSTORM
xdebug.client_host=host.docker.internal
xdebug.client_port=9010
xdebug.idekey=PHPSTORM
xdebug.mode=debug,develop

Profilerの設定

Xdebug3.xでProfilerを動かす雑な設定を公開しましたので合わせてご覧ください。