vimでPHPのデバッグ
2009 年 3 月 13 日 by fujiivim+プラグイン(remote PHP debugger)+xdebugの環境をつくることで、vimでPHPのデバッグを行うことができるようになります。
今回は環境構築と、デバッグ方法を簡単に紹介したいと思います。
【環境構築】
今回は以下の環境に、デバッグ環境を構築してみました。
・CentOS 5.2
・vim 7.0
・PHP 5.2.6
以下のコマンドでxdebugをインストールします。
#pecl install xdebug
インストール完了後、php.iniに以下の設定を加えます。
—————————————————
[zend]
zend_extension=”/usr/lib/php/modules/xdebug.so”
xdebug.remote_enable=On
xdebug.remote_host=localhost
—————————————————
その後設定を反映させる為、Apacheを再起動します。
以下の内容のファイルを作成し、Webから参照できる場所に保存します。
(phpinfo.php)
<?php phpinfo(); ?>
作成ファイルにアクセスするとPHPの設定が参照できます。
xdebugの設定があればOKです。
次は、vimのプラグイン「remote PHP debugger」を利用できるようにします。
debugger.tgzをダウンロードし、「$HOME/.vim/plugin/」に展開します。
(展開後)
—————————————————
$HOME/
`– .vim
`– plugin
|– debugger.py
`– debugger.vim
—————————————————
以上で、デバッグ環境の構築は完了です。
【デバッグ】
デバッグ環境ができたので、実際にデバッグしてみたいと思います。
今回デバッグするスクリプトは以下になります。
(test.php)
<?php function add($val) { return $val + 2; } $val = 1; $ret = add($val); echo $ret; ?>
vimで、スクリプトを開きます。
「F5」キーを押すと、以下のメッセージが表示されます。
—————————————————
waiting for a new connection on port 9000 for 5 seconds…
—————————————————
このメッセージが表示されている間に、ブラウザから該当ファイルにアクセスします。
その際「XDEBUG_SESSION_START」のパラメータを付加し、アクセスします。
http://localhost/test.php?XDEBUG_SESSION_START
アクセスすると、vimがデバッグモードになります。「F2」「F3」「F4」でステップ実行ができます。
画面左のウィンドウに「->」が現在の実行位置です。ステップ実行することで、「->」が移動していきます。
「F11」で変数の内容を閲覧することもできます。変数の内容は、「WATCH_WINDOW」に表示されます。
「F6」でデバッグモード終了です。
ちなみにブレイクポイントも打つことができます。「F5」でデバッグを始める前に、ブレイクポイントを打ちたい箇所にカーソルを移動し、「:Bp」と入力すれば画面左に「B>」が表示されたと思います。
その後は、「F5」でデバッグを開始します。デバッグモードで「F5」を押すとブレイクポイントを打った位置まで実行され、処理が止まるので、それ以降ステップ実行も可能です。
print_rやvar_dumpで変数の中を表示しデバッグするよりはるかに効率があがります。
print_tやvar_dumpでデバッグされてる方は、試されてみる価値ありです。