💬

xdebugの基礎の基礎

2021/04/21に公開

PHPの定番デバッグツール。

XdebugはPHPのエクステンション(コンパイルしてPHP環境にインストールするもの)で、デバッグの機能を提供する。

・スタックの追跡。エラーが発生するまでの経緯を詳細に表示する。
関数に渡されたパラメーターも表示され、エラーの原因を探しやすくなる
・var_dumpを整形して出力する。varDumper同様、色分けした情報と構造化ビューを生成。スーパーグローバルのダンバーが可能。
・コードのボトルネックを特定するプロファイラー。
外部のツールでパフォーマンスのグラフをビジュアライズできBlackfileのようなグラフが書ける。
。実行中のコードや、IDE、ブラウザーなどのエンドクライアントにリモートでxdebugを接続するリモートデバッガー。コードにブレークポイントなどを設定して1行ずつアプリケーションを実行できる。
・リクエスト中に実行されたコードの量を示すコードカバレッジ。ユニットテストで使う。テストでカバーしたコードの割合がわかる。

xdebugの使い方
Xdebugのインストール手順書は、ほぼすべてのケースを網羅しています。ですが、これから説明する機能を使うなら、エクステンションがインストールされてアクティベーション済みの改良版Homesteadがおすすめです。

高性能なIDEやBlackfileがあるのにxdebugが必要な理由
IDEには優れたコード・ルックアップが機能があるので、リンクフォーマットの機能が必要なのか疑問に思う。エラーや例外を扱うロガーも豊富にあり、Blackfileには関数トレースやプロファイラーもある。
しかし、Xdebugは適切なユニットテストの機能(テストのフレームワークがコードカバレッジレポートを作成するにはユニットテストが必要)や、リモートでブレークポイントを設定してデバッグする機能がある。また歴史が長いので安定していて完成度の高いツール。
既存のツールで満足していてXdebugの機能が必要ないなら不要だが、効率的にプロジェクトを進めるためにはXdebugが必要なのかもしれない。

XdebgをVagrantやPhpStormで使う
少しブレイクです。PHPランタイムやメインマシンに影響ぜず早くスムーズに動くために、現在ではバーチャルマシン上で多くの開発が進められている。
バーチャルマシン上でのXdebugの使い方がわかりますでしょうか?
複雑な環境でもブレークポイントを使ったリモート接続機能がある。詳しくはGifアニメの解説がわかりやすいセットアップマニュアルを参照。。

Discussion