XDebugでソースレベルデバッグをしたい
実際にプログラムを組み始めると、デバッグをすることになります。自分がコーディングした部分であればprintfデバッグでもなんとかなりますが、やはりソースレベルデバッグができると便利です。
今回は、XDebugを使えるようにしたいと思います。
実行環境は次のようになります。
-
リモート
VartualBoxの仮想マシンに構築したUbuntu Linux 18.04
- Webサーバ
- Apache2
- PHP
- バージョン7.4
-
ローカル
Windows 10
- IDE
- Visual Studio Code
以前環境構築 - Vagrant で LAMP 環境を構築 (1) -でXDebugパッケージをインストールしていますので、設定から始めたいと思います。
まずは、PHPのiniファイルの設定を行います。
/etc/php/7.4/mods-available/xdebug.ini
zend_extension=xdebug.so xdebug.remote_enable = 1 xdebug.remote_autostart = 1 xdebug.remote_host = none xdebug.remote_connect_back = 1 xdebug.remote_port = 9000
1行目はパッケージをインストールした時点で記述されています。
3~7行目を追加します。
次にVisual Studio Codeの設定です。
メニューから[実行]-[構成を開く]を選択します。
Listen for XDebug
に対して設定を編集します。
"configurations": [ { "name": "Listen for XDebug", "type": "php", "request": "launch", "port": 9000, "pathMappings": { "/vagrant_data": "${workspaceFolder}", } },
11行目は、xdebug.ini
のxdebug.remote_port
に合わせます。
12~14行目を追加します。
リモートのパス:ローカルのパス
となるようにします。
リモートのパス(PHPファイルのパス)をローカルのパスに変換するテーブルのようで、該当するファイルが見つからない場合は、リモートのパスでファイルが見つからないというエラーメッセージが出ます。
設定ができたら任意のブレークポイントを設定して、メニューから[実行]-[デバッグの開始]を選択するか、F5
を押してデバックを開始します。
ブラウザでページにアクセスするとブレイクポイントで停止すると思います。
また、変数のインスペクトもできると思います。
以上で、XDebugが利用できるようになりました。
参考サイト
Visual Studio CodeでPHPのリモートデバッグ環境を構築する
[PHP] Xdebug のリモートデバッグ、理解していますか?