PHPEclipseでリモートデバッグ(DBG)

PHPEclipseでリモートデバッグ

今までPHPをデバッグする場合var_dump等を使用して変数の中身を見るという原始的やり方をしていました。そろそろ作業の効率アップのためにちゃんとリモートデバッグできるようにしようと思いPHPEclipseでリモートデバッグを行いました。リモートデバッグを使えばEthna等のフレームワークを用いた開発においても非常にデバッグが楽になります。 以下はその時のメモです。

0.今回の環境 [PHPEclipseでリモートデバッグ] 

今回はローカル内でApacheを動かしてローカルでリモートデバッグを行います。
  • WindowsXP
  • eclipse 3.2.0
  • php 4.4.7
  • apache2.0


 1.eclipseのインストール [PHPEclipseでリモートデバッグ]

eclipseの本家からeclipse本体をダウンロードします。

今回はeclipse3.2.0をダウンロードしました。

LanguagePackも合わせてダウンロードして日本語化しておくと私のような英語が苦手な人でも安心です。
ダウンロードしたファイルを解凍、LanguagePackを導入する場合はLanguagePackのファイルを解凍したeclipseフォルダに上書きします。


2.PHPEclipseのインストール [PHPEclipseでリモートデバッグ] 


eclipseのPHPプラグインであるPHPEclipseをインストールします。
以下はLanguagePackで日本語化した場合の説明です。

eclipseを起動し[メニュー]-[ヘルプ]-[ソフトウエア更新]-[検索及びインストール]を選択します。


[インストールする新規フィーチャーを検索]にチェックを入れ[次へ]ボタンを押下します。
[新規リモート・サイト]ボタンを押下し、新規更新サイトを登録します。[名前]の欄は適当で結構です。

[URL]の欄にPHPEclipseの更新サイトURLを入力します。
#私の場合はnightly(http://phpeclipse.sourceforge.net/update/nightly/)を設定しました。


[OK]ボタンを押下した後[検索を含めるサイト]の一覧の中に先ほど適当に?決めた[名前]の横のチェックボックスにチェック入っているか確認します。チェックが入っていない場合チェックを入れ、[終了]ボタンを押下します。

[インストールするフィーチャーの選択]画面で[PHPEclipse]にチェックを入れ[次へ]ボタンを押下します。
[使用条件の条項に同意します]にチェックを入れ[次へ]ボタンを押下します。

[インストールするフィーチャー]を確認したら[終了]ボタンを押下するとPHPEclipseのサイトから自動でダウンロードされて更新されます。途中警告が出ますが、[インストール]ボタンを押下して進めてください。

完了すると再始動するか聞かれるので[はい]を選んでeclipseを再起動します。


3.DBGのインストール [PHPEclipseでリモートデバッグ] 


PHPのデバッグモジュールであるDBGをインストールします。

DBGのダウンロードサイトからWebサーバの環境にあったものをダウンロードします。私の場合はローカル内でApacheを立てていますので、Windows用のWin32DBG 2.15.5 dbg modulesをダウンロードしました。

ダウンロードしたファイルを解凍すると[x86]というフォルダのなかに[php_dbg.dll-○.○.x]ファイルがいくつかあります。その中から自分のPHP環境に合ったものを[php_dbg.dll]にリネームします。
私の場合、PHP4.4.7を使用していますのでphp_dbg.dll-4.4.xをphp_dbg.dllにリネームしました。

リネームした[php_dbg.dll]をphpのextensionsフォルダ(extフォルダ)にコピーし、以下のようにphp.iniを変更します。

extension=php_mbstring.dll
 ・
 ・
 ・
extension=php_dbg.dll ←追加

[Debugger] ←追加
debugger.enabled=on ←追加
debugger.profiler_enabled=on ←追加

php.iniの編集が完了したら、Apacheを再起動しphpinfo()を実行し、以下のような赤枠内の表示されていた場合インストール完了です。


4.PHPeclipse用デバッグ環境を構築 [PHPEclipseでリモートデバッグ] 


このままPHPeclipseのデバッグ機能を使用してもいいのですが、若干使い勝手が悪いので、こちらのサイトにすばらしいプラグインがありますので、[インストール]に記載されている方法でプラグインをeclipseにインストールします。

またPHPeclipseのdbg Debug FeatureとXdebug Featureは無効にしておきます。

5.リモートデバッグ [PHPEclipseでリモートデバッグ] 

適当なPHPプロジェクトを作成し、簡単なプログラムを作成します。
<?php $a=1; $a=2; $a=3; ?>

次にeclipseのデバッグ設定を行います。メニューの[実行]-[構成およびデバッグ]を選択します。

[PHP DBG Remote Script]をダブルクリックし新規構成を作成します。入力を以下の画像のように入力し[デバッグ]ボタンを押下してデバッグを開始します。

先ほど作成したプログラムにブレークポイントをつけます。

ブラウザで先ほどのプログラムにアクセスし実行します。実行する場合URLに以下のパラメータを付加します。

DBGSESSID=システムID@デバッグホスト:ポート番号

システムIDは適当な数字で結構です。デバッグホスト名はPHPeclipseを動かしているIPまたはホスト名です。ポート番号は標準の設定の場合7869です。
例)
http://localhost/test/test.php?DBGSESSID=1@localhost:7869

アクセスするとブレークポイントでプログラムが止まっているか確認します。

ブレークポイントを進め変数の値が変化しているか確認します。

これでどこでもブレークポイントがつけれるようになりました。もしうまくいかない場合はファイアーウォール等をチェックしてみてください。
リモートデバッグはブラウザーでアクセスするとDBGがPHPeclipseを動かしているPCの7869番ポートに対しアクセスを行います。そのためセキュリティー等で制限がある場合、リモートデバッグを行うことができません。

Copyright (C) 2007 TOnDa TondA.