vim+xdebugで作るphpデバッグ環境
xdebug でのデバッグは eclipse+TruStudio つかってる人が結構いるみたいだが、どうも php で eclipse ほどの環境を使うというのには違和感を感じていた。開発環境という話でいえば、最近は PHPIDE(いつのまにかPDTって名前になってた) とか結構いい感じに整ってきてて、これはこれで使いやすかったんだけど、eclipse が(気分的にも)重い。
で、いっとき emacs に行きつつも Ctrl 押しながらのカーソル操作に慣れず(というか、面倒)、結局 vim に戻った。なにより xdebug2.0 でサポートされてるリモートデバッグプロトコル DBGp に対応したプラグインが使えるのが大きい。コレが激しく便利。あまりやってる人を(ブログとかで)見かけないのが不思議だ。やってる人はわざわざ書かんってことか。
ということで、ちょい前に環境を作ってみたときのうろ覚えメモ。
まずは xdebug のインストール。0.9 なら pecl でも入るけど、今回の環境は 2.0.0 使ってるので、本家 から拾ってくる。先月末に RC3 が出てたみたい。こんなかんじでインストールできるはず。
$ cd xdebug-2.0.0RC3
$ phpize
$ ./configure –enable-xdebug
$ make
これで、modules/xdebug.so ができるので、<PHPのホームディレクトリ>/lib/php とか適当な場所に運んで、php.ini に次のように追記して読み込んでやる。
これで $ apachectl graceful とかして、phpinfo() みるか、$ php -i とかやれば、うまくいってれば xdebug 設定状況が見られる。こんだけでも、ブラウザでデバッグすればスタックトレース見られるし、まあ、そこそこ使える。
続いて、リモートデバッグ環境。僕の場合、php.ini に以下を追加。リモートデバッグをやるよ、そのときのハンドラ(プロトコル)は DBGp だよ、自動でリモートクライアント探して接続するよ、みたいな意味。
他にもいろいろ設定できるので、詳しくは 本家にいろいろ書いてある のを参照。
これで、また apachectl graceful すれば、リモートデバッグできるようになる。本家で拾ってきた xdebug-2.0.0 のアーカイブには debugclient というリモートデバッグクライアントが含まれているので、こいつをインストールしてやる。(どうやってやるかは忘れた。確か、./configure とか make && make install してやるだけだったとおもうけど、最終的には使わなくなるので、適当にマニュアル参照、で逃げ。)
debugclient が入ったら、サーバ上で $ debugclient すれば、php 実行待機状態に入る。
Xdebug Simple DBGp client (0.9.1)
Copyright 2002-2006 by Derick Rethans.
Waiting for debug server to connect.
この状態で、サーバ上で適当な php を実行してやれば、デバッグクライアントにコマンドプロンプトが返る。
Connect
<?xml version=”1.0″ encoding=”iso-8859-1″?>
<init fileuri=”file:///var/www/test.php” language=”PHP” protocol_version=”1.0″ appid=”32547″ idekey=”root”><engine version=”2.0.0RC3″><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2007 by Derick Rethans]]></copyright></init>
(cmd)
ここで RDBp を喋ってやればリモートデバッガと会話できる。ためしに status -i 12345 とか入れてみてやれば、starting とか status が返ってくるはず。-i 指定したのはトランザクションIDといって、レスポンスがどのリクエストに対応したものか識別するためのもの。
気が済んだら Ctrl-C とかでデバッガ終了しちゃってOK
最後に vim の設定。vim onlineから debugger.tgz を拾ってきて、~/.vim/plugin に設置。vim 再起動して、準備完了。
そんじゃ実験。適当な php を読み込む準備をして、vim の適当なバッファで F5 を押す。下の方に waiting new connection in 5 sec. と出るので、5秒以内に php 実行。vim 画面がデバッガ表示に切り替わる。
あとは、ファンクションキー各種でステップ実行。F2 でステップイン、F4 でステップアウト。F11 で変数の中身も見られる。この辺のキー説明は配布元とか拾ってきた debugger.vim に書いてある。
こんだけできればデバッグ環境としては、じゅうぶんです、僕は。さくさく快適ー。
最近のコメント