「EmacsでもPHPをリモートデバッグしたい!ステップ実行したい!Vimに負けたくない!」
という、誰かの心の声が聞こえたので、久しぶりにGEBENの設定をしてみました。
ちなみに前回は挫折しています。
前提
- CentOS上のLAMP環境 (
http://example.com/
) - 同じCentOS上にEmacsをインストールして開発
インストール
Xdebug
今回は yum
でインストールします
$ sudo yum install -y php-pecl-xdebug --enablerepo=epel
インストール後に /etc/php.d/xdebug.ini
を設定します
zend_extension=/usr/lib64/php/modules/xdebug.so
xdebug.remote_enable = true
xdebug.remote_handler = dbgp
xdebug.remote_host = 127.0.0.1 ; リモートのEmacsからデバックしたいならIPアドレスを適切に変更しましょう
xdebug.remote_port = 9000
httpdをリスタートしてXdebugは設定完了です。
GEBEN
GEBENは(いつの間にか)MELPAに対応していますのでコマンドで簡単にインストールできます。
M-x package-install geben
使い方
M-x geben
で、Emacsが9000番ポートでXdebugからの通信を待ち受けます。
そして、おもむろにブラウザから ?XDEBUG_SESSION_START=1
をつけてアクセス
http://example.com/?XDEBUG_SESSION_START=1
するとステップ実行が開始されます。簡単!
詳しいキー操作はREADMEを見てもらうとして
よく使うキー操作を紹介します
-
SPC
...ステップイン/ステップオーバ -
i
...ステップイン -
o
...ステップオーバ -
g
...実行 -
c
...カーソル位置まで実行 -
b
...ブレークポイントを設定 -
u
...ブレークポイントを解除 -
U
...ブレークポイントを全て解除 -
v
...変数内部を別画面で表示 (q
で戻れます)
Emacsの待ち受けを終了するときは M-x geben-end
です。
CakePHPで該当コントローラの処理までステップ実行するのがつらい!
最近のフレームワークはルータやディスパッチャが頑張りますから、「該当ファイルまで SPC
連打」とか死ねます。
そういうときは M-x geben-open-file
で対象ファイルを開き、 c
でカーソル位置まで実行させましょう。( M-x find-file
ではないのがポイントです )
というわけで
よいEmacs開発ライフを!