2012年12月2日日曜日

Eclipse PDT + xdebugでPHPをデバッグ、プロファイルする

Eclipse PDTとxdebugを利用して、ブレークポイントを設定したり、ステップ実行したりできる環境を整える。

xdebugの設定

xdebugを利用できるように設定ファイルを調整し、apacheにextentionとしてxdebugを読み込ませる
たくさん設定値があるがとりあえず以下の値だけ設定する。
xdebug.remote_hostの値はEclipse(WindowsのIP)を実行しているホストのIPに設定する

supernova ext # cat /etc/php/apache2-php5.3/ext/xdebug.ini | grep remote
xdebug.remote_enable="1"
xdebug.remote_handler="dbgp"
xdebug.remote_host="192.168.xx.x" <--- リモートデバックの場合このIPは注意
xdebug.remote_mode="req"
xdebug.remote_port="9000"
xdebug.remote_autostart="0"
xdebug.remote_log=""

supernova ~ # /etc/init.d/apache2 restart

phpinfo()なページで確認


xdebugは先ほどインストールしたので、apacheを起動してphpinfoのページから読み込まれているか確認する。




Eclipse PDTを設定する

Xdebugと通信できるように設定する

デバックのプロファイルを新規作成する




新規作成




デバック対象の設定





設定箇所

  • 「Name」に設定名を入力
  • 「Server Debugger」に「XDebug」を選択
  • 「File」には「Browse」ボタンで開くダイアログからwww/index.phpを選択
  • 「Breakpoint at First Line」のチェックははずす(ここは好みで)
  • 「Auto Generate」のチェックははずす
  • 「Configure...」ボタンをクリックしてサーバーの設定をしておく(別画像)


「Configure...」設定




ブレークポイントを仕込んでデバックをしてみる

デバッガの起動




処理をとめたいコードにブレークポイントを仕込む




デバック実行してみる




これで、リモートデバックが完成、F6(ステップオーバー)、F5(ステップイン)などいろいろあるので試してみて。
停止した場所での変数の確認や書き換えなどができるようになります。

XDebugを利用してスクリプトをプロファイルする

xdebug.iniを修正してプロファイル用のファイルを出力するように設定する
プロファイルのファイルが出力されるのでディレクトリを作成しておく

このディレクトリへ出力することによってWindowsでそのファイルを取得できる
supernova ext # mkdir /home/apache/profile
supernova ext # chown apache:apache /home/apache/profile 

xdebug.iniを修正

以下のパラメータを修正し、apacheを再起動する
supernova ext # cat /etc/php/apache2-php5.3/ext/xdebug.ini | grep profile
xdebug.profiler_enable="1"
xdebug.profiler_output_dir="/home/apache/profile"
xdebug.profiler_output_name="cachegrind.out.%p"
xdebug.profiler_enable_trigger="0"
xdebug.profiler_append="0"
xdebug.profiler_aggregate="0"

supernova ~ # /etc/init.d/apache2 restart

PHPが動作する適当なアドレスをブラウザでアクセスし、プロファイルが出力されるか確認する
supernova profile # ls -l /home/apache/profile/
total 52
-rw-r--r-- 1 apache apache 51944 May  4 10:49 cachegrind.out.8273

WinCacheGrindをインストールする

プロファイルツールでWinCacheGrindソフトがあったので使ってみた
 ダウンロード: WinCacheGrind
WinCacheGrind.exeで出力されたファイルをオープンするとプロファイルが表示される




関数の処理時間などが確認できていい感じではないか?
ほかにも使いやすいクライアントがあれば教えてください。

0 件のコメント:

コメントを投稿