PHPコードのデバッグ
Eclipse+PDTには、PHPのデバッグ機能が搭載されています。一般的にPHPの実行環境には、デバッグのために実行を制御する機能がありません。そのため、PHPデバッグのために実行を制御するためのモジュールを組み込みます。
デバッグのためのモジュールは、XDegubとZendデバッガー(Zend_Debugger)の2種類が存在します。XAMPPには、いずれも付属しているので、ここではZendデバッガーを使用してデバッグを行います。設定は、PHP実行環境の設定で行いました。
なお、Eclipse+PDTは、実際のWebサーバに搭載されたデバッグモジュールと連携してデバッグを行うリモートデバッグ機能も搭載されています。
ブレイクポイントの設定
デバッグに欠かせないのが、ブレイクポイントです。ブレイクポイントは、デバッグ時に実行をブレイク(一時中断)したい行にブレイクポイントを設定します。実行がブレイクすると、変数の内容やコード間の呼び出し状況を確認することが可能です。必要があれば、変数の値を変更することも可能です。その後は、実行状況を確認しながら、少しづつ実行を進めることが可能です。
ブレイクポイントの設定は、エディタにソースコードを表示して、設定したい行の左端をダブルクリックします。ブレイクポイントが設定された行には、行の先頭に印となる青いポインタが表示されます。
PHPファイルのデバッグ
PHPファイルのデバッグは、実行と同様に非常に簡単です。
デバッグの開始
[実行(R)]メニューの[デバッグ(D)]を選択すると、デバッグが開始されます。ツールバーのデバッグアイコンでもデバッグを開始できます。
パースペクティブをデバッグ用に変更する警告の「パースペクティブ切り換えの確認」ダイアログボックスが表示されるので、[はい(Y)]ボタンをクリックします。パースペクティブが「PHPデバッグ」に切り替わり、対象のPHPファイルの先頭行(最初のPHPコード)で自動的にブレイクします。
以下に、「PHPデバッグ」パースペクティブの画面構成を説明します。
- 「デバッグ」ビュー
- 「変数」ビューと「ブレイクポイント」ビュー
- 「デバッグ出力」ビューと「ブラウザ出力」ビュー
- PHPエディタ
- 「コンソール」ビュー
実行状況と制御のためのビューです。ツールバーに実行を制御するためのアイコンが配置されています。実行しているPHPファイルがツリー状に表示されます。他のPHPファイルに遷移した場合でも、「デバッグ」ビューの表示で容易に判別できます。
「変数」ビューは、実行中の変数の内容を表示します。Webシステムでは、重要となる環境変数の内容も表示されます。なお、変数の内容は、ブレイク中に変更することが可能です。
「ブレイクポイント」ビューは、設定されているブレイクポイントを表示します。ブレイクポイントを無効にすることも可能です。
「デバッグ出力」ビューと「ブラウザ出力」ビューは、デバッグ途中の出力内容を表示します。
実行中(ブレイク中)の行を反転表示します。マウスポインタを変数に重ねると、変数の値がバルーン表示します。また、カーソルをブレイクしたい行に置き、[指定行まで実行(L)]を選択するとブレイクポイントを設定しなくてもその行でブレイクします。
実行環境から出力されるメッセージを表示します。Error、Warning、Noticeなどのメッセージを確認できます。
実行制御
ブレイク後の実行制御は、さまざまなニーズに対応するために多くの機能が用意されています。これらを使い分けることで、大量で複雑なプロジェクトでも効率的に実行およびデバッグが行えます。
項目 | 内容 | 備考 |
再開 | 実行を再開する | |
中断 | ただちにブレイクする | |
終了 | 実行を終了する | |
ステップイン | 呼び出すコードに実行を進める | 他のコード呼び出しでない場合には1行実行が進む |
ステップ・オーバー | 今から実行するコードの呼び出しが終わった直後まで実行する | 他のコード呼び出しでない場合には1行実行が進む |
ステップ・リターン | 現在実行が一時停止している位置が含まれるコードの呼び出し元に実行が戻った時点でブレイクする | |
指定行まで実行 | カーソルがある行まで実行する | |
ステップ・フィルターの使用 | 事前にステップ・フィルター設定が必要 | フィルター指定したコードはデバッグ対象にしない |
まとめ
Eclipse+PDTのインストールからデバッグまでを紹介してきました。プロのPHP技術者が求める上位の機能に関しては、Zend社が提供しているZend Studioシリーズに実装されています。こちらには、ユニットテスト(カバレッジを含む)やプロファイリングなどのPDTに実装されていない機能が実装され、細々としたブラッシュアップもされているので、プロユースのプロダクトと言えます。それは、Zend社のサイトで確認してください。
プロフェッショナルはさておき、ここで紹介したようにEclipse+PDTには、PHPのコーディング作業を効率化するための機能が用意されています。これらの機能を使用することによって、PHPプログラミングの量を減らすことが可能です。これまで、利用していなかった方々もぜひお試しください。