MAMPのphp.iniに設定を追加する

MAMPを使用している場合、私はPROなのでファイルメニュー -> テンプレートを編集 から編集できますが、PROでない場合はphp.iniを直接開いての編集となります。各phpバージョンごとに設定が必要なので、利用環境に合わせて設定を追加していきます。例えば以下。zend_extensionの部分はコメントアウトされているだけなので、行頭のセミコロンを削除でOKです。

[xdebug]
zend_extension=“/Applications/MAMP/bin/php/php5.3.14/lib/php/extensions/no-debug-non-zts–20090626/xdebug.so”
xdebug.remote_enable=On
xdebug.remote_host=“localhost”
xdebug.remote_port=9000
xdebug.remote_handler=“dbgp”
xdebug.remote_autostart=Off
xdebug.profiler_enable = On
xdebug.profiler_dir = “/Applications/MAMP/tmp/php5.3.14/xdebug/”
xdebug.collect_vars=on
xdebug.collect_params=4
xdebug.dump_globals=on
xdebug.dump.GET=*
xdebug.dump.POST=*
xdebug.show_local_vars=on

SublimeXdebugを追加する

SublimeXdebugというXdebugクライアントのプラグインがあります。実行すると、ST2上にXdebugによるPHPデバッグメニューとデバッグ状況を表示する分割ウィンドウを表示します。

.sublime-projectファイルに設定を追加する

ST2のプロジェクトとして保存している場合は、以下の様な設定を追加します。例えばWordPressを利用時にwpフォルダを作っている場合は、http://your.web.server/wpと記述します。


{
    "folders":
    [
        {
            "path": "..."
        },
    ],

    "settings": {
        "xdebug": { "url": "http://your.web.server" }
    }
}

ブレークポイントを指定する

ST2上で止めたい処理の行で Shift + F8 を押し、Add/Remove Breakpoint を実行します。すると行番号の左に●が表示されます。デバッグ実行時に該当する行まで処理がくるとストップして、そこの部分で現在の変数はどうなっているか?といった情報を確認できます。

デバッグを開始する

Shift + F8 でクイックメニューが表示されます。Run Debugging
選択するとデバッグを開始できます。
メニューからデバッグを開始すると、http://your.web.server?XDEBUG_SESSION_START=sublime.xdebugというURLで規定ブラウザ上にページが表示されます。URLは先ほどの.sublime-projectで指定した値です。

注意しなければいけないのは、セッションキーとしてURLに XDEBUG_SESSION_START=sublime.xdebug という値が追加されていることです。デバッガにXdebug使ってるよーと通知するための値です。デバッガのメニューから Rub debugging を実行した場合に自動で追加されますが、表示されたページ上でPOSTや別ページへのリンクにジャンプしようとした時は、その値がクリアされるので注意が必要です。
Chromeエクステンション Xdebug helper の設定でもセッションキーを指定するので、使用する場合には忘れずに。

ショートカットで効率良くデバッグ

ごく基本的なステップ実行によるデバッグをショートカットで実行できます。プラグインのページにもありますが、よく使うものとしては以下でしょうか。

  • Ctrl + Shift + F5: 次のブレークポイントまで実行
  • Ctrl + Shift + F6: ステップオーバー(次の行へ)

Xdebugでリモートデバッグとなると、Eclipse PDTやNetbeansを使っている例が多数ですし、見やすさや使いやすさは一歩譲りますが、軽量なSublime Text 2でもできるようになるのは嬉しいですね。