XDebug的使用

来源:互联网 发布:校园网端口初始化失败 编辑:程序博客网 时间:2024/06/05 06:17

 

XDebug是Derick Rethans写的PHP的一个扩展(extension),从使用的方式来看,主要包括二部分内容:一是其提供了一系列的在PHP文件中使用的函数;另一部分是基于DBGp协议的远程调试的功能,在此主要总结一下第二部分的内容。

 

具体的网站:http://www.xdebug.org,目前的版本为: 2.1.0,此版本支持PHP4和PHP5。

安装方法:

一、可以在网站上下载源代码后编译和安装xdebug,具体可以参加源代码包中的README文件;

二、Xdebug是PHP的一个比较成熟的扩展了,所以也可以直接网络安装编译后的文件。我所使用的是Ubuntu 10.04系统,用下面的命令可以完成安装:

sudo apt-get install php5-xdebug

 

配置方法:

如果是以第一种方法安装xdebug的,那么需要自己创建一个.ini文件,来放置相关的配置信息;当然也可以在现有的.ini中放置xdebug的配置信息。如果需要对PHP命令行以及网页中的PHP都进行调试时,则需要确保这个.ini文件在二种情况下都会被使用。

在我的机器上,目录结构为:

/etc/php5/apache2/conf.d (此conf.d为一链接,指向/etc/php5/conf.d)

/etc/php5/apache2/php.ini

/etc/php5/cli/conf.d (此conf.d为一链接,指向/etc/php5/conf.d)

/etc/php5/cli/php.ini

/etc/php5/conf.d

由于apache2及cli的conf.d都指向/etc/php5/conf.d, 所以我只要在此目录中放置xdebug的配置文件:xdebug.ini

 

配置文件中的内容:

zend_extension=/usr/lib/php5/20060613+lfs/xdebug.so

xdebug.remote_enable=1

xdebug.remote_autostart=1

说明:

第一行:根据xdebug.so的实际位置来设置zend_extension项

第二行:要进行远程调试,则必须设置xdebug.remote_enable为1

第三行:Xdebug有多种方式进入debug状态;而如果设置xdebug.remote_autostart为1,则当运行到PHP代码时,Xdebug模块会进入debug状态。

还有其它的一些选项,具体可以查看帮助文档。

 

检查配置:

1)如果xdebug是用于对PHP命令行调试的:

命令php –m会列出所有安装的模块,xdebug应该也是其中的一项;

如果命令php –m没有列出php模块,则可以通过命令php –ini来查看是否xdebug.ini包含在输出的所有的.ini列表中;

php –re xdebug会列出xdebug的具体情况,包括配置项信息及xdebug提供的所有函数,确保以下二项与你的配置是一致的:

    Entry [ xdebug.default_enable <ALL> ]

      Current = '1'

}

Entry [ xdebug.remote_autostart <ALL> ]

  Current = '1'

}

2)如果xdebug是用于对网页中的PHP内容调试的:

可以通过在网页中调用PHP函数phpinfo(), 其输出中应该包含以下信息:

additional .ini files parsed中包含xdebug.ini

xdebug.ini的配置信息等,配置信息中包含:

xdebug.remote_enable on

xdebug.remote_autostart on

 

目前已有很多的IDE中集成了XDebug的调试工具,完整的列表可以参见xdebug的网上文档。在XDebug的源代码包中,也自带了一个基于终端命令行的xdebug_client工具,用户需要手工输入基于DBGp的调试命令,具体的命令行请参见:http://www.xdebug.org/docs-dbgp.php,但是这个使用是比较繁琐的,所以我基于DBGp协议自己用PHP写了一个调试客户端。

 

具体代码如下:

 

 

使用方式:

1)先运行调试客户端:./xdebug_client.php, 会显示Waiting for the conntion...,处于等待状态;

2)当在命令行中运行任何其它.php脚本,或者在浏览器中加载PHP页面时,调试客户端会进入命令状态,显示为:

Connection established: Resource id #5

cmd>

3)输入s或者step_into;开始进入调试状态,会显示为:

 

表示当前debug的文件为verify.php

目前将要运行第二行代码,在源代码显示区域中,红颜色显示的为将要运行的代码

4)可以尝试其它命令,如

b 5 在第5行设置断点

p _POST显示变量$_POST中的内容

bl 列出所有的断点

eval $_POST[‘type’] 显示$_POST[‘type’]中的内容

所有的命令可以通过help命令来查看