Xdebugについて知ろう!
- Xdebugとは、実際のコードの処理を上から1行ずつ自分の目で確認しながら実行できるようになるものです。
- メリット:常に処理をリアルタイミングで確認する為、その時点での変数の中身などの把握がしやすく、条件分岐が上手く働いているかの確認が正確にできるようになります!
設定をしていこう!
- 1:XAMPPのApacheを起動!
- 2:Visual Studio codeを開こう!
- 3:新規でphpinfo.phpファイルを作成しましょう!
- 4:先ほど新規作成したファイル内に下記を記載しましょう!
phpinfo.php
<?php
echo phpinfo();
?>
- 5:ブラウザ上で作成したphpinfo.phpを開きましょう!
- 6:phpinfo画面をControl+Aで全てコピーします!
- 7:Xdebug のページに先ほどコピーした内容をペーストします!
下記がXdebug公式ページになります。
https://xdebug.org/wizard - 5:dll をダウンロードします。
※ダウンロードした物を[C:\xampp\php\ext]の配下におきましょう!
- 7:php.iniファイルの末尾に下記を追記して保存します!
※php.iniファイルに記載する下記の内容の内[php_xdebug-3.1.6-8.1-vs16-x86_64.dll]は先ほどダウンロードしていただいたフォルダ名に合わせてください。
[xdebug]
zend_extension = C:\xampp\php\ext\php_xdebug-3.1.6-8.1-vs16-x86_64.dll
- 8:Apacheを再起動させましょう!
- 9:初回に見たphpinfoを再度確認しにいきましょう!下記の記載が追加されていればOKです!
※phpinfoでXdebugのVersionが3系か2系か確認する。
下記は2系になります。
下記は3系になります。 - 10:下記の内容を再度php.iniに追記しよう!
php.ini(2系)
[xdebug]
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
php.ini(3系)
[xdebug]
xdebug.mode = debug
xdebug.start_with_request = yes
- 11:VSコードを開きPHP Debugの拡張機能をインストールしよう!
- 12:デバックをかけるPHPファイルを開こう!
- 13:下記のように虫のマークをクリック!
- 14:launch.json作成リンクをクリック!
- 15:launch.json内の下記のブロックだけを有効にしましょう!
launch.json
{
// IntelliSense を使用して利用可能な属性を学べます。
// 既存の属性の説明をホバーして表示します。
// 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003
}
]
}
- 16:再度デバックをかけたいPHPファイルに移動して処理を止めたい箇所にブレイクポイントをつけよう!
- 17:下記の実行ボタンを押そう!
- 16:ブラウザを開いてデバックをかけているPHPファイルを表示させよう!
- 17:VSコードに戻ると止めたい処理行にハイライトが当たっているのでそこから処理を手動で進めてみよう!
ツールの使い方を知ろう!
- メニューバーから確認できる通り、ステップ実行には3つの種類が存在します。
- ステップイン(F11)
最もステップ単位が小さいデバッグ方法です。基本的には1行単位で実行され、実行中に関数が含まれていた場合については、関数内部も1行単位で実行することができます。 - ステップオーバー(F10)
ステップインと基本的な動作は変わりませんが、実行中に関数が含まれていた場合については関数内部には入らず、関数実行後の状態(次の行)に移行します。 - ステップアウト(shift + F11)
現在実行している関数の残りの処理をスキップします。例えば、ステップインで関数内に入ったものの関数の残りの処理をスキップしたい場合などに使用します。
まとめ
- xdebugはより、現場や実践向きのデバック方法ですので、今から慣れておくことで今後様々なエラーに当たっても現状を把握しやすくなりますので是非使って慣れていきましょう!
- 次回は実際の使い方〜現場ではどんな場面で使うの?について話していきます。
参考資料
https://qiita.com/embed-contents/link-card#qiita-embed-content__18ecc9aef081cb4f6a010c71eb467998
https://qiita.com/embed-contents/link-card#qiita-embed-content__c74616d5978ebd3982b4c5c54f1a3c9e
https://qiita.com/embed-contents/link-card#qiita-embed-content__480c977f53c6eb994f72e0fcedd8869e
コメント