|
关于开发过程中调试手段的重要性就不阐述了,刚接触PHP脚本的开发方式,感觉调试很麻烦,上网查了一下,也有不少文章介绍,不过有些已经过时了,也有些并不完全正确和完整。
先介绍PHP Debugger的工作原理:
1.WEB服务器的PHP环境加载Debugger模块
2.在收到调试请求时,模块开始发生作用
3.收集相关运行时数据,发送到调试客户端显示运行时数据
所以,顺理成章,下面的安装步骤就不难理解了,分为WEB服务器端的配置和调试器端的配置两部分。
(一)WEB服务器
1.先获取调试模块
Win: http://www.xdebug.org/download.php
Linux: 用PEAR/PECL方式安装:pear install xdebug
Linux: 用源码编译
最终得到一个dll文件(win)或so文件(linux)
2.找出WEB服务器使用的php.ini, 浏览一个包含phpinfo()函数的php文件查看输出信息.
xampp(win) -> x:\xampp\apache\bin\php.ini
debian -> /etc/php5/apache2/php.ini
CentOS -> /etc/php.ini
上面举了几个例子,也不一定正确,以实际情况为准
3.修改php.ini(以win为例)
[Zend]
zend_extension_manager.optimizer_ts = "X:\xampp\php\zendOptimizer\lib\Optimizer"
zend_optimizer.enable_loader = 1
zend_optimizer.optimization_level=15
[XDebug]
;; .ly Zend OR (!) XDebug --注意这里,zend_extension_ts必须只能一个有效
zend_extension_ts="X:\xampp\php\ext\php_xdebug-xxx.dll"
xdebug.remote_enable=true
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.profiler_enable=1
xdebug.profiler_output_dir="X:\xampp\tmp"
---重启WEB服务器---
(二)调试器端
支持xdebug的dbgp协议的IDE/文本编辑器有很多,详细的请参考
http://www.xdebug.org/docs/remote中的CLIENTS。
下面以我实践过的来作说明
1.NetBeans6.5
这个异常简单,只需要在安装了PHP开发插件后,在它的选项页中检查调试器端口=9000即可。
使用时,在调试菜单中选择“调试项目”,就可以进入断点了
关于NetBeans进行PHP代码Debug的更详细信息,请参考:
http://zh-cn.netbeans.org/kb/docs/php/debugging.html
2.Notepad++
这是个开源项目,台湾程序员开发,支持本地语言界面,一个很强大的编辑器。
http://notepad-plus.sourceforge.net/uk/site.htm Notepad++主页
http://sourceforge.net/project/showfiles.php?group_id=189927&package_id=236520 调试器插件
安装npp插件:
下载回来后,把dbgpPlugin.dll文件copy到npp目录下plugins子目录中,重新运行npp
由于调试器客户端必须根据特定标志判断进行断点的,所以,进行WEB开发时,需要在http请求上作出一些调整才能正常工作。比如NetBeans6.5会在启动调试的浏览器进程时,在URL上加入XDEBUG_SESSION_START=xxxxx的QueryString变量,以判断是否启动断点。而npp是没有这个功能的(当然也可以增加运行菜单用特定参数的URL启动浏览器来解决),要手工加这个就太麻烦了,所以这里再推荐一个关于xdebug的firefox插件。
安装FireFox插件:
在firefox附加组件中搜索xdebug,安装xdebug helper扩展,安装完成后,会在状态栏多出来个图标,单击它会变绿或变淡,变绿时,它会在http请求中加入必要的cookie变量,让npp的debug插件可以正常工作。
使用:
1.用notepad++打开php文件,然后在插件菜单选择Deugger.
2.光标到希望断点的行,按下面的红色圆形按钮,可以增加一个断点
3.点亮firefox的xdebug helper,浏览到相关php下就会在NPP进入调试断点
4.熄灭firefox的xdebug helper,调试器不影响PHP执行
这里参考了一些其它高手的文章:
http://hi.baidu.com/icej/blog/item/2f6dfe5004edca5d1138c2d6.html
当然也参考了xdebug官方主页
http://xdebug.org/
xdebug的功能不止是在php开发WEB中进行调试,客户端也不止这两种,我自己就打算迟些把过渡到VIM上,毕竟notepad++只能跑在win上。
限于水平和精力,研究的深度很有限,有兴趣的同好,可以到官方主页了解详情,并作出指正,谢谢。
|
|
|