Xdebug 概览

Filed under: PHP |
Posted on

xdebug是一个开源的、用于调试PHP程序的调试工具(debug tools),它是以zend扩展的形式和PHP的内核集成在一起的,功能实现在相对底层,对外的接口是PHP函数和配置文件选项,安装xdebug后,还可利用dbgp和gdb协议来对php脚本进行调试,例如php eclipse就同时支持ZendDebug和Xdebug,xdebug与eclipse的通讯就是基于dbgp协议来完成的

以下是官方网站对xdebug的介绍

xdebug 扩展帮助你在调试PHP程序时提供大量有价值的调试信息,xdebug能提供包括以下调试信息:

在错误消息中提供堆栈及函数信息,例如:

  • 显示用户自定义函数中全部的参数信息
  • 函数名、源文件以及出错代码的所在行
  • 同时也支持类方法的上述信息
  • 内存分配
  • 防止死循环

xdebug的安装

在xdebug的官方网站上提供和PHP版本对应的源代码和Windows下的dll文件下载
对于Linux用户,可下载源代码自行编译
对于Windows用户可下载dll文件直接使用

在Linux下编译xdebug的方法在源码包中的README文件有详细描述,按步骤编译和安装即可
另外,从源码包的结构来看,xdebug也可作为PECL模块的形式来安装
pecl主页:http://pecl.php.net/
pecl命令的详细使用:
$pecl help 或
$pecl help [command]进行查看,例如:$pecl help install

在Linux下:编译并在编译目录成功生成xdebug.so后,在Windows下:下载到与PHP版本对应的xdebug.dll后,修改php.ini文件,加入以下一行以启动xdebug:

在Linux下:zend_extension="/wherever/you/put/it/xdebug.so"
在Windows下:zend_extension_ts="c:/php/modules/xdebug.dll"

与安装PHP扩展不同,安装zend扩展需要明确指定.so(dll)文件的绝对路径,而安装PHP扩展,.so(dll)文件的路径是通过extension_dir来指定的

xdebug使用了Zend扩展的机制实现了debug功能,并且没有对其它zend扩展产生依赖,所以不安装ZendExtensionManager也可照常使用

安装完毕,使用php -m查看,如xdebug出现在了模块列表中,则表示安装成功

重启apache以便apache中的php_module及时载入新增加的xdebug模块
对于cli模式,对php.ini的修改是即时生效的

以下是xdebug的所有可配置选项,通过phpinfo()或者php -i查看当前xdebug配置

xdebug

xdebug support => enabled
Version => 2.0.0

Supported protocols => Revision
DBGp - Common DeBuGger Protocol => $Revision: 1.125 $
GDB - GNU Debugger protocol => $Revision: 1.87 $
PHP3 - PHP 3 Debugger protocol => $Revision: 1.22 $

Directive => Local Value => Master Value
xdebug.auto_trace => On => On
xdebug.collect_includes => On => On
xdebug.collect_params => 1 => 1
xdebug.collect_return => On => On
xdebug.collect_vars => Off => Off
xdebug.default_enable => On => On
xdebug.dump.COOKIE => no value => no value
xdebug.dump.ENV => no value => no value
xdebug.dump.FILES => no value => no value
xdebug.dump.GET => no value => no value
xdebug.dump.POST => no value => no value
xdebug.dump.REQUEST => no value => no value
xdebug.dump.SERVER => no value => no value
xdebug.dump.SESSION => no value => no value
xdebug.dump_globals => On => On
xdebug.dump_once => On => On
xdebug.dump_undefined => Off => Off
xdebug.extended_info => On => On
xdebug.idekey => Administrator => no value
xdebug.manual_url => http://www.php.net => http://www.php.net
xdebug.max_nesting_level => 100 => 100
xdebug.profiler_aggregate => Off => Off
xdebug.profiler_append => Off => Off
xdebug.profiler_enable => On => On
xdebug.profiler_enable_trigger => Off => Off
xdebug.profiler_output_dir => D:/php_xdebug_info => D:/php_xdebug_info
xdebug.profiler_output_name => cachegrind.out.%p => cachegrind.out.%p
xdebug.remote_autostart => Off => Off
xdebug.remote_enable => Off => Off
xdebug.remote_handler => dbgp => dbgp
xdebug.remote_host => localhost => localhost
xdebug.remote_log => no value => no value
xdebug.remote_mode => req => req
xdebug.remote_port => 9000 => 9000
xdebug.show_exception_trace => Off => Off
xdebug.show_local_vars => Off => Off
xdebug.show_mem_delta => Off => Off
xdebug.trace_format => 0 => 0
xdebug.trace_options => 0 => 0
xdebug.trace_output_dir => D:/php_xdebug_info => D:/php_xdebug_info
xdebug.trace_output_name => trace.%c => trace.%c
xdebug.var_display_max_children => 128 => 128
xdebug.var_display_max_data => 512 => 512
xdebug.var_display_max_depth => 3 => 3

Tags : , ,
Trackback URL : u can trackback from your own site

Leave a Reply