概要
PHPのコア開発者であるDerickRethans氏が開発している、PHPのデバッグ用エクステンション
xdebugインストール方法
root@akat:/home/akat# uname -a Linux akat 3.2.0-60-generic #91-Ubuntu SMP Wed Feb 19 03:54:44 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux root@akat:/home/akat# aptitude install php5-xdebug
xdebug設定
root@akat:/home/akat# vi /etc/php5/cgi/conf.d/xdebug.ini ====== zend_extension=/usr/lib/php5/20090626/xdebug.so ;プロファイリングを有効に xdebug.profiler_enable = 1 ;プロファイリング結果の出力ディレクトリ xdebug.profiler_output_dir = "/var/www/akat.info/tech/htdocs/download" # %RはリクエストURL xdebug.profiler_output_name = cachegrind.out.%Rlog # ログを既存ログの上書きではなく、追加する xdebug.profiler_append=1 # 1にすると、XDEBUG_PROFILE GET/POSTパラメーターやクッキーを設定することで一部ページのみデバック可能らしい #xdebug.profiler_enable_trigger=1 ======
xdebug解析方法
WinCacheGrind
http://sourceforge.net/projects/wincachegrind/
IXR_Server->callに4秒かかっていることがわかる
階層がわかるようになっており、これをダブルクリックして進めていくとどこが重いかがわかる
プレフィックスがcachegrind.out.にする必要がある
KCachegrind
http://sourceforge.net/projects/precompiledbin/
Incl.:総実行時間・Self:自分自身の実行にかかった時間
WinCacheGrindよりグラフィカル
プレフィックスをcallgrind.にする必要がある
プログラムに組み込んでメモリ使用量測定
以下をソースに記載する
echo xdebug_memory_usage(), "\r\n";
参考
http://www.plusmb.jp/2009/06/26/3923.html
http://metaboy.blog23.fc2.com/blog-entry-993.html # 特定のページでプロファイラを利用したい場合
http://www.xdebug.org/docs/profiler