PHP扩展Xdebug的安装使用实例

Xdebug是什么?它是一款可以用来调试php代码运行一款工具,下面小编来给大家介绍Xdebug安装方法,下面教程是基于linux与windows系统的.

Q:xdebug是什么?

A:xdebug是一个开源的php调试器,以php模块的形式加载并被使用.

上周发现xdebug出了RC(release candidate)2版了,就拿下来安装了一下,顺便写了一个安装手册,希望对大家有用.

linux xdebug模块和相关工具的安装,测试环境:Ubuntu12.04+PHP 5.3.10,代码如下:

  1. # 获取xdebug最新源码包
  2. git clone git://github.com/derickr/xdebug.git
  3. cd xdebug/
  4. # 如果没有安装phpize扩展,请尝试:apt-get install phpize
  5. phpize
  6. ./configure --enable-xdebug
  7. make && make install

我这边生成的路径为:/usr/lib/php5/20090626+lfs/xdebug.so,然后更改php.ini文件,自行选择增加这些配置选项,代码如下:

  1. [xdebug]
  2. ;扩展文件路径
  3. zend_extension = /usr/lib/php5/20090626+lfs/xdebug.so
  4. ;开启自动跟踪
  5. xdebug.auto_trace = On
  6. ;开启异常跟踪
  7. xdebug.show_exception_trace = On
  8. ;开启远程调试自动启动
  9. xdebug.remote_autostart = On
  10. ;开启远程调试
  11. xdebug.remote_enable = On
  12. ;收集变量
  13. xdebug.collect_vars = On
  14. ;收集返回值
  15. xdebug.collect_return = On
  16. ;收集参数
  17. xdebug.collect_params = On
  18. ;跟踪格式
  19. xdebug.trace_format = 0
  20. ;输出文件夹
  21. xdebug.trace_output_dir=/tmp/xdebug
  22. ;输出文件名格式
  23. xdebug.trace_output_name = trace.%c.%p
  24. ;开启分析器
  25. xdebug.profiler_enable = On
  26. ;输出路径
  27. xdebug.profiler_output_dir = /tmp/xdebug
  28. ;输出文件名格式
  29. xdebug.profiler_output_name = cachegrind.out.%p
  30. ;记录内存使用情况,//phpfensi.com
  31. xdebug.show_mem_delta = On

配置完成后可使用php -i|grep xdebug查询配置好的值.

windows系统xdebug模块安装

1、去www.phpfensi.com下载相应版本php的模块文件,保存下载后的文件到php的ext目录,可以自己修改文件的名称,如保存成:xdebug-2.0.0RC1.dll.

2、修改php.ini,增加如下信息,代码如下:

  1. [Xdebug]
  2. zend_extension_ts=”c:/php5/ext/xdebug-2.0.0RC1.dll”
  3. xdebug.auto_trace=on
  4. xdebug.collect_params=on
  5. xdebug.collect_return=on
  6. xdebug.trace_output_dir=”c:/Temp/xdebug”
  7. xdebug.profiler_enable=on
  8. xdebug.profiler_output_dir=”c:/Temp/xdebug”

参数解释:

zend_extension_ts=”c:/php5/ext/xdebug-2.0.0RC1.dll”;加载xdebug模块,这里不能用extension=xdebug-2.0.0RC1.dll的方式加载,必须要以zend的方式加载,否则安装上后,phpinfo打印出来的里的xdebug段的会有Must LOADED AS ZEND EXTENSION的警告信息(原因未知).

xdebug.auto_trace=on;

;自动打开“监测函数调用过程”的功模,该功能可以在你指定的目录中将函数调用的监测信息以文件的形式输出,此配置项的默认值为off.

xdebug.collect_params=on;

;打开收集“函数参数”的功能,将函数调用的参数值列入函数过程调用的监测信息中,此配置项的默认值为off.

xdebug.collect_return=on

;打开收集“函数返回值”的功能。将函数的返回值列入函数过程调用的监测信息中。此配置项的默认值为off。

xdebug.trace_output_dir=”c:/Temp/xdebug”

;设定函数调用监测信息的输出文件的路径。

xdebug.profiler_enable=on

;打开效能监测器。

xdebug.profiler_output_dir=”c:/Temp/xdebug”;

;设定效能监测信息输出文件的路径。

3、重启apache

这样,在本地运行php的时候,会在所设定的目录里产生一些调试信息的文件:

函数调用过程监测信息文件的文件名格式:trace.××××××.xt,这个文件可以直接查看,里面包含了函数运行的时间,函数调用的参数值,返回值,所在的文件和位置等信息,内容格式还是相对直观的.

效能监测文件的文件名格式:cachegrind.out.××××××××,这个文件也可以直接查看,不过信息格式不易被人类所理解,所以我们需要接下来的一个软件.

二、安装wincachegrind

由于效能监测文件:cachegrind.out.××××××××文件的内容不易被人类所理解,所以我们需要一个工具来读取它,windows下就有一款这样的软件:wincachegrind.

1、到http://sourceforge.net/projects/wincachegrind/下载安装wincachegrind

2、安装运行后,点击Tools->options,设定你的working folder(php.ini里xdebug.profiler_output_dir的值),这样就可以比较直观的查看效能监测文件的信息了.

另:不知道是哪个参数没有设定正确,我机器上所有的php的运行后的函数调用过程监测信息都写到了一个trace.××××××.xt中,哪个达人要是知道就给指条明路吧.