I ♥ WordPress

PHPでリモートデバッグ
2006/12/09 18:19 posted by kunkichi

昨日は仕事を午前休もらって、アシアル株式会社主催のPHPセミナーに行ってきました。もちろん無料セミナー(笑。

で今回のテーマは「PHPで快適デバッグ」

PHPのデバッグ、というかWebアプリのデバッグは、例えばVisual Studioなんかを使ったデバッグとはちょっと違って難しいところがある。例えば、スクリプトのある時点での変数の値を確認したいとする。

Visual Studio だと、

  • 変数に値が入るところでブレークポイントを入れて処理をそこで止める。
  • 確認したい変数にマウスを合わせると値が表示される。

って感じで簡単にできるのだけど、Webアプリケーションとなるとこれが一気に難しくなる。

  • 変数に値が入るところで exit 入れたりして処理を止める。(ループがネストしていると大変、、、)
  • 変数を画面に出力するように print_r やら var_dump で処理を入れる。(後で消すのを忘れて本番にそのままいっちゃったり、、、)

こんな感じでとても原始的な上に後でめんどくさくなるやり方をするパターンが多い。というのもWebアプリでは処理はサーバ側で実行されるので、サーバ側で制御してあげないといけない。ローカルPCで Visual Studio を使うようにはいかないのだな。

ということで、DBG + DBGListener + DBGクライアント(PHPSimpleDebugger) を使った手法の説明がメインでした。簡単な図で表すと、
dbg.jpg

      1. ブラウザからリクエストにデバッグ用変数をくっつけて送信。
      2. デバッグ用変数に含まれているクライアントにデバッグ情報を送信。
      3. DBGListnerがデバッグ情報を受けてDBGクライアントを起動。
      4. DBGクライアントからデバッグ実行。
      5. DBGListener経由でサーバにデバッグ命令を送信。
      6. デバッグ命令を元にブラウザにレスポンスを返す。

試してないのでちょっと間違ってるかもしれないけど、要はサーバとクライアントでデバッグ用のポートを別途用意して、デバッグ情報や制御をそこで行うと。これでIDEライクなデバッグができるという訳。昔DBGを試してみたことはあったのだけど、リモートではうまく動かなかったのでそこで諦めてたんだよね。SSHでトンネル貼れば本番環境でもデバッグできそうだし。早速会社で試してみようっと。

あとDBG以外にもいろいろ面白いのがありました。

  • Pear::Var_dump
    var_dumpの出力結果を奇麗に表示してくれるPEARライブラリ。
  • dbug
    こちらも同じ。JavaScriptで折りたたみとかできるみたい。
  • Xdebug
    DBGと同じぐらい高機能なデバッグモジュール。
  • Gubed
    PHPで書かれたデバッグライブラリ。Firefoxのエクステンションと連動するらしい。
  • WinCacheGrind
    Xdebugで出力されたプロファイリング結果を表示するアプリ。

コメント&トラックバック

トラックバックURL





このページの先頭へ