Eclipse PDT で PHP デバッグをする

PHP の統合環境は長らく PHPEclipse を使っていましたが、Eclipse 本家で PDT (PHP Development Tools) の開発がはじまって、両者使い分ける感じでいました。 最近は PDT のほうが良さそうになったのでこちらがメインになっています。

PDT は WordPress のプラグインをかくときなどに、シンタックスエラー検出や定義ジャンプなど基本的な機能だけ使っていましたが、 Shiroica さんが PDT にデバッガの設定をしていて便利そうだったのでぼくもまねしてみました。 🙂

Eclipse PDT+Aptana+Subclipse – SharpLab.

おおー!これは凄い。そしてこれまでテキストエディタでWordPressのThemeを書いて、var_dump()を使ってデバッグをしていた自分の努力はなんだったんだ…。

デバッガというのはプログラムのソースを指定の行で止め、一行ずつ目で確認しながら実行したり(ステップ実行)、変数の中身を画面から確認したり(ウォッチ)するツールのことです。

これがね~、特になにかプログラムが想定と違う動作するときにあるとないとでは修正効率がまったく違うという、素人お断りの大人ツールです(嘘)

Web のプログラムの場合、操作によって起動スクリプトがまちまちだったりエントリポイント問題が面倒なせいか、デバッガ使う人はなんだか少なく思えますが、PDT + xdebug を使うとなにも考えずにデバッグ可能でした。 すごす。

昔、PHPEclipse にデバッガいれていたことありましたが、起動スクリプトごとに設定を変更しなければいけなかったり結構面倒だった覚えがあります。

てなわけで、Windows のほうは Siroica さんのサイトが参考になります。 ぼくはせっかくなので違うことということで、Linux の Eclipse PDT に設定してみました。 🙂

Windows の xampp には最初から xdebug という PHP デバッグに必要な拡張モジュールがはいっているそうなのですが、 Linux 版の xampp にははいっていないようでしたのでコンパイルして xdebug.so を作成します。

コンパイルには xampp の Development package が必要ですので、ダウンロードして /opt/lamm/ にいっしょにいれて、xampp 環境にあわせた xdebug をソースからコンパイルします。 詳細手順は以下の感じでOKです。

Install ‘xdebug’ PHP extension for XAMPP on linux at SANIsoft – PHP for E Biz

Following is the procedure for installing PHP’s ‘xdebug’ extension for XAMPP on linux (most of the installation procedure is same as http://www.xdebug.com/docs/install but there are a few quirks).

で、 /opt/lampp/etc/php.ini に xdebug.so を読み込ませる設定をします。 上の設定だけだと remote_debug が enable にならないので一行追加です。

zend_extension=/opt/lampp/lib/php/extensions/xdebug.so
xdebug.remote_enable=1

これで、Apache 起動して phpinfo() みると xdebug が読まれていることが分かります。

で、Eclipse PDT 側の設定です。 デバッグのダイアログをひらき、アクセスする URL とワークスペースのファイルの位置をあわせてあげます。

debug01

ちょいと見にくいですが、File のところが /wordpress-27x/index.php ってことでEclipse ワークスペース上のファイルです。 デバッガプロセス一発目の起動に使うだけなので適当にとりあえず index.php にしておきましょう。

で、下の URL の欄で http://localhost/wp/wordpress27x/ ってことで実際に Apache で index.php が動くときの URL をいれて対応させてあげます。 xdebug は mod_rewrite がはいっていて URL が疑似られていても平気みたいです。

でけたら、ソースコード上の好みの位置でデバッグブレイクを設定して、上のダイアログのデバッグボタンを押下。 これで、デバッグプロセスに PDT が繋がります。

debug02

デバッグ時に表示される Eclipse のインターナルブラウザでたとえば WordPress が表示されるので、デバッグブレイクを設定したソース部分が動く位置まで操作していくとブレイクして上のようにとまってくれます。 あとは変数の中身をウォッチしたり、ステップインして次の行にすすめるなりできます。

このデバッグモードはデバッグビューからデバッグプロセスをとめるまで続いてくれます。 なのでその間にソースを修正して、インターナルブラウザで再度操作すればそのソースで止まってくれます。 なんの意識もせずにブレイクできるので昔に比べるて相当進化していました。。(汗 とてもいい感じです。 🙂

一点注意するのは、メソッド宣言行にブレイクしてもとまってくれないところです。 メソッドの実処理頭の一行目にブレイクをはりましょう。(ちょっとこれではまりました)

さて、PDT ですがデバッグも含めてなかなか便利です。 Siroica さんのように Aptana もいれるとかなり強力な環境になると思います。

最後に、PDT でちょっと気に入っている機能をひとつ紹介します。

PHP って、なんだかちゃんぽんで組み込み関数名がぼくはなかなか覚えられないのですが、こういうサポートもしてくれる機能があります。

PHP Function というビューがあって、フィルターにたとえば mb_ とかいれると組み込み関数を絞り込んでくれます。 でもって、右クリックマニュアルで Web からドキュメントをひいてくれて大変便利です。

debug04

もちろんソース上の組み込み関数名の上で、Shift + F2 するなどしてもマニュアルはひらけます。 デフォルトは英語マニュアルですが、日本語のマニュアルにしたい場合は以下のように設定に ja をいれるだけでOKです。

debug05

てなわけで、ちょっとね Eclipse はヘビーなソフトなので万人向けではないのですが、少し大きめのアプリかく場合はテキストエディタオンリーより全体的な作業効率はかなり良くなると思います。 Eclipse ばっかりみてればいいので、精神衛生上もよいですね。

よければお試しください。 🙂

コメントを残す