Xdebug3-リモートデバッグの設定(VS Code + Xdebug3)

Xdebug3とVS Codeを利用したリモートデバッグのやり方を調べました。

私の場合は、仮想マシンはVagrantを使って構築しています。

ホストOSの環境

  • VS Code
  • PHP Debug(拡張機能)

VS Code – デバッグ設定(launch.json)

pathMappingsを追加してます。

{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003,
            "pathMappings": {
                "/var/www/html/": "${workspaceRoot}" // ゲストOS側のドキュメントルート(ソースが配置されているフォルダ)
            }
        },
    ]
}

ゲストOS(仮想マシン)

環境

  • CentOS7
  • PHP7.2
  • Apache2.4

Xdebugのインストール

インストール手順については、公式ページに従います。

https://xdebug.org/wizardを開くと、下記の様な画面が表示されるはずです。

このテキストエリアにphpinfo()で出力された内容をコピペして「Analyse my phpinfo() output」ボタンを押下すると、

インストール手順が表示されますので、その手順に従ってください。

設定ファイル

Installation Wizardに従いインストールを進めると、最後の方に設定ファイルを変更してXdebugを有効にする手順が出てくると思います。

その時に、リモートデバッグするための設定も↓のような感じで追加してください。
(私の場合は/etc/opt/remi/php72/php.d/99-xdebug.iniを修正)

[xdebug]
zend_extension=xdebug
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.discover_client_host=1
xdebug.client_port=9003

discover_client_hostは1で設定してください。

リクエストをした側のIPアドレスに自動的に接続する設定のようで、こちらが無いと上手くいきませんでした。

start_with_requestやclient_portは、任意の設定で大丈夫だと思います。

これで設定は完了です。

試す

適当なPHPファイルを作成して、ブレークポイントを置きます。

「実行とデバッグ」のタブを開き、「Listen for Xdebug」を選択して実行ボタンを押してください。

その後、作成したPHPファイルのURLにアクセス(http://○○○○/test.php)すると、

ブレークポイントで止まるはずです。