15
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Organization

GEBEN on EmacsでPHPのリモートデバッグ

「EmacsでもPHPをリモートデバッグしたい!ステップ実行したい!Vimに負けたくない!」

という、誰かの心の声が聞こえたので、久しぶりにGEBENの設定をしてみました。

GEBEN on Emacs

スクリーンショット 2014-09-19 17.56.37.png

ちなみに前回は挫折しています。

前提

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
15
Help us understand the problem. What are the problem?