vimでPHPのデバッグ

2009 年 3 月 13 日 by fujii

vim+プラグイン(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です。
phpinfo_xdebug

次は、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…
—————————————————
vim_debug_run

このメッセージが表示されている間に、ブラウザから該当ファイルにアクセスします。
その際「XDEBUG_SESSION_START」のパラメータを付加し、アクセスします。
http://localhost/test.php?XDEBUG_SESSION_START

アクセスすると、vimがデバッグモードになります。「F2」「F3」「F4」でステップ実行ができます。
画面左のウィンドウに「->」が現在の実行位置です。ステップ実行することで、「->」が移動していきます。

「F11」で変数の内容を閲覧することもできます。変数の内容は、「WATCH_WINDOW」に表示されます。
「F6」でデバッグモード終了です。
vim_debug_var_watch

ちなみにブレイクポイントも打つことができます。「F5」でデバッグを始める前に、ブレイクポイントを打ちたい箇所にカーソルを移動し、「:Bp」と入力すれば画面左に「B>」が表示されたと思います。
その後は、「F5」でデバッグを開始します。デバッグモードで「F5」を押すとブレイクポイントを打った位置まで実行され、処理が止まるので、それ以降ステップ実行も可能です。
vim_debug_bp

print_rやvar_dumpで変数の中を表示しデバッグするよりはるかに効率があがります。
print_tやvar_dumpでデバッグされてる方は、試されてみる価値ありです。

タグ: , ,

TrackBack