「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開発ライフを!
