xdebug 使用 tips
平时常用 xdebug 追踪 php 的错误信息(stack trace),还有一个所谓的 profiling ,就是统计并保存函数(包括 php 函数和自定义函数)的执行时间,内存消耗以及参数等情况都可以记录,但是开销更大,一般不要记录 。
设置如下
——————–
zend_extension = /usr/local/php/extensions/xdebug.so
xdebug.default_enable = Off
xdebug.profiler_enable_trigger = 1
xdebug.profiler_output_dir = “/data/xdebug/”
xdebug.profiler_output_name=trace.%R.txt
xdebug.profiler_enable = Off
——————–
这个设置关掉了 stack trace ,profiling 功能,只在 http 请求中有 XDEBUG_PROFILE (GET/POST/COOKIE) 的时候,才统计函数执行情况并保存成文件。如果不 disable 上面的功能,运营服务器很容易挂掉。以上设置以后, http 进程大概需要多消耗 1-2M 内存,CPU 消耗也不大。平时没有必要加载 xdebug,时不时去观察下,随机给几个用户的 COOKIE 里加个 XDEBUG_PROFILE 是很好的习惯。
关于生成的 log 文件,windows 下以前一般用 wincachegrind 来看,但是 xdebug2 某个版本以后,修改了生成文件的时间单位,直接用 wincachegrind 看时间会少一个数量级。建议用 http://code.google.com/p/webgrind/ 来看。
其实还有一个想法,完全可以借用 webgrind 的相关代码,写一个脚本分析执行时间满足一定要求的请求的情况。需要的话,安排一个 crontab, 定时记录下 profiling log , 定时分析下程序哪些地方执行比较慢。
