使用NetBeans + Xdebug调试PHP程序的方法


Posted in PHP onApril 12, 2011

按照网络上的资料配置好调试环境后实际试用了发现功能较为简陋,单文件调试还可,如果是跨文件调试项目就不那么舒服了,试用过程中因为DBGP插件也存在许多缺陷,烦恼不断,经常性地stack overflow,很是遗憾。后来想想Np++只是Editor,不要对它强求过多,插件的版本也比较低,存在许多BUG也是可以理解的,等它慢慢完善再说吧,开源社区的力量可是很强大的,^^。
昨晚在坛里某位同志的博文里再次见到了NetBeans这个熟悉的字眼(之前选开发环境的时候因为NB非常强大,功能设置很人性化,界面非常友好,又有非常强的自动完成功能,都差不多就要定它了,可是因为当时不懂有xdebug,所以没搞懂怎么调试,就继续用着EP Ctrl+B“调试”程序了),就用加上“xdebug”google了一下发现NB调试功能就是通过其实现的,而且功能齐全,评价不错,哈哈,大大的惊喜,因为太晚了怕影响舍友休息,就决定次日来搞掂它。
……

今天外出溜达回来后,把开发环境折腾了一番,现将配置过程整理如下:

[我的环境]

OS:Vista Business SP1 en_US
PHP:5.2.8
Apache:2.2.11
NetBeans:6.5.1 PHP
        http://www.netbeans.org/downloads/start.html?platform=windows〈=zh_CN&option=php&version=6.5.1
Xdebug:2.0.4-5.2.8
        http://www.xdebug.org/files/php_xdebug-2.0.4-5.2.8.dll

[安装Xdebug]

1、将php_xdebug-2.0.4-5.2.8.dll解压至php安装目录下的ext文件夹。
本机为:D:\Wamp\php\ext
2、修改php.ini,在末位添加如下内容:
[php]
zend_extension_ts=" D:\Wamp\php\ext\php_xdebug-2.0.2-5.2.5.dll"
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
[/php]
注:zend_extension_ts 的值以你实际安装位置为准;xdebug 会与zend_optimizer相冲突,请注释/删除掉php.ini内的与zend_optimizer相关的语句;xdebug.remote_port的值要与NB的工具->选项->调试器端口 所填写内容一致,缺省为9000
3、在Vista环境下,通过apache模块加载php的方式在载入xdebug后执行php脚本apache会崩溃,如果要正常使用xdebug调试PHP程序的话,需要将PHP的运行方式更改为CGI,请在httpd.conf添加如下内容:
[php]
#LoadModule php5_module D:/Wamp/php/php5apache2_2.dll
#PHPIniDir "D:/Wamp/php/"
ScriptAlias /php/ "D:/Wamp/php/"
<Directory D:/Wamp/php/>
Order allow,deny
Allow from all
</Directory>

#AddType application/x-httpd-php .php
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php-cgi.exe"

注:注释掉的是以模块方式加载PHP的配置语句
[/php]

[开始调试]

1、新建并打开项目
2、打开需要调试的文件并设置断点。
3、执行顶部菜单内的 调试->调试”xxx.php”,在弹出的对话框中选择“服务器端PHP”。点击确定后,NB会自动使用你的默认浏览器打开你要调试的文件,如:http://localhost/Comsenz/UCenter_Home/index.php?XDEBUG_SESSION_START=netbeans-xdebug。此时,你会发现浏览器的请求一直未返回,而且NB右下角显示“netbeans-xdebug正在运行”,你就可以按F7正常调试程序了。
若未设置断点,执行调试的时候程序将自动在当前文件的第一行暂停执行。若不希望自动暂停执行,请取消勾选工具->选项->PHP->在第一行停止。
4、表单处理调试可以执行 调试->调试项目,后续操作类似,只不过如果你执行到你设置断点的脚本时,NB会自动中断在断点处,等待你调试哈!
5、详细的请参照NB官方调试指南http://www.netbeans.org/kb/docs/php/debugging_zh_CN.html

[参考站点]
http://www.netbeans.org/downloads/index.html (NetBeans下载)
http://www.xdebug.org/download.php (Xdebug下载)

原文:http://www.zvv.cn/blog/show-101-1.html

[ 本帖最后由 zwws 于 2009-3-29 02:55 编辑 ]

使用NetBeans + Xdebug调试PHP程序的方法
1、打开项目,设置断点.jpg

使用NetBeans + Xdebug调试PHP程序的方法
2、执行调试.jpg

使用NetBeans + Xdebug调试PHP程序的方法
3、调试方式.jpg

使用NetBeans + Xdebug调试PHP程序的方法
4、单步调试.jpg

使用NetBeans + Xdebug调试PHP程序的方法
5、项目调试(跨页).jpg

小Z写东西总是那么详细。顶上!
PS: 楼主的头像很雷
1.“xdebug 会与zend_optimizer相冲突,请注释/删除掉php.ini内的与zend_optimizer相关的语句”
    不知道哪些语句是与zend_optimizer相关的语句 楼主能否详细的给出
2.我的是win操作系统
              PHP 5.2.9
              Apache 2.11
              MYSQL 5.1


不知道是否和楼主配置的方式是一样的
3.我也很喜欢NetBeans的开发模式 但是xdebug总是调试不好 按照网上说的做了还多次
仍旧不行  前期最终选择了放弃  看了楼主发表的具体配置方法 很是感激 不过还有上面
两个疑问  谨希望能够得到楼主的最快最详细的回复答案  非常感谢
sejie10011 (2009-3-31 11:07:11)
楼主写得那么详细。顶上!
zwws (2009-3-31 12:22:52)
1、呵呵,解决问题的方法很重要的,如果你知道zend_optimizer是如何安装的,那不就解决问题了么?
我用“zend_optimizer php.ini”在google搜到了这篇文章
http://ideacm.com.cn/read.php?12
所以你只要根据文章在本地的php.ini里找到文章内提到的相关语句注释掉不就好了嘛,其实就是"zend_Optimizer."打头的语句。当然,前提是你安装了zend_optimizer.

2、xdebug 2.0.4 支持 PHP 5.2.9的。

zwws (2009-3-31 12:24:14)
豆瓣淘滴。
niohe (2009-3-31 22:43:54)
多谢LZ指教!!
iminto (2009-4-02 19:58:07)
支持楼主
大碗茶 (2009-4-03 17:02:32)
zend optimizer和 xdebug是可以共存的
qgymje (2009-8-27 11:56:53)
我想问一下我的这个情况
http://bbs.phpchina.com/thread-149075-1-1.html
调试后步入步出不能用
zhenjiangdeni (2010-6-23 14:42:03)
楼主,我都按照你说的配置了,为什么,ide又下角老是显示   正在等待连接(netbeans-xdebug).没有办法调试
luzhou (2010-6-25 19:29:22)
不错啊!
luzhou (2010-6-25 19:31:05)
http://zh-cn.netbeans.org/kb/docs/php/debugging.html
gguoyu (2010-6-25 20:58:24)
回复 12# zhenjiangdeni
PHP 相关文章推荐
解析PHP中的unset究竟会不会释放内存
Jul 18 PHP
php 中文字符串首字母的获取函数分享
Nov 04 PHP
PHP生成数组再传给js的方法
Aug 07 PHP
php建立Ftp连接的方法
Mar 07 PHP
Yii2.0中使用js异步删除示例
Mar 10 PHP
php传值方式和ajax的验证功能
Mar 27 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
Apr 15 PHP
php 函数使用可变数量的参数方法
May 02 PHP
Bootstrap+PHP实现多图上传功能实例详解
Apr 08 PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
Feb 28 PHP
php实现网页上一页下一页翻页过程详解
Jun 28 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
Mar 09 PHP
php产生随机数的两种方法实例代码 输出随机IP
Apr 08 #PHP
PHP随机数生成代码与使用实例分析
Apr 08 #PHP
PHP的cURL库功能简介 抓取网页、POST数据及其他
Apr 07 #PHP
php curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
Apr 07 #PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
Mar 31 #PHP
PHP stream_context_create()作用和用法分析
Mar 29 #PHP
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
Mar 29 #PHP
You might like
标准PHP的AES加密算法类
2015/03/12 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
2015/03/16 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
2015/04/21 PHP
浅析PHP关键词替换的类(避免重复替换,保留与还原原始链接)
2015/09/22 PHP
php检查页面是否被百度收录
2015/10/28 PHP
PHP上传图片、删除图片简单实例
2016/11/12 PHP
Avengerls vs Newbee BO3 第一场2.18
2021/03/10 DOTA
从jQuery.camelCase()学习string.replace() 函数学习
2011/09/13 Javascript
javascript实现rgb颜色转换成16进制格式
2015/07/10 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
2015/08/05 Javascript
Jquery幻灯片特效代码分享--打开页面随机选择切换方式(3)
2015/08/15 Javascript
swtich/if...else的替代语句
2015/08/16 Javascript
JS onkeypress兼容性写法详解
2016/04/27 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
原生js实现移动端触摸轮播的示例代码
2017/12/22 Javascript
vue 父组件中调用子组件函数的方法
2019/06/06 Javascript
微信小程序返回上一页传参并刷新过程解析
2019/12/13 Javascript
Vue 一键清空表单的实现方法
2020/02/07 Javascript
js实现金山打字通小游戏
2020/07/24 Javascript
Python实现遍历数据库并获取key的值
2015/05/17 Python
基于python的七种经典排序算法(推荐)
2016/12/08 Python
python实现自动解数独小程序
2019/01/21 Python
OpenCV图像颜色反转算法详解
2019/05/13 Python
python实现最小二乘法线性拟合
2019/07/19 Python
基于torch.where和布尔索引的速度比较
2020/01/02 Python
纯css3(无图片/js)制作的几个社交媒体网站的图标
2013/03/21 HTML / CSS
CSS3提交意见输入框样式代码
2014/10/30 HTML / CSS
Parts Express:音频、视频和扬声器的第一来源
2017/04/25 全球购物
印度在线购买电子产品网站:Croma
2020/01/02 全球购物
医院领导班子四风问题对照检查材料
2014/10/26 职场文书
英语邀请函范文
2015/02/02 职场文书
父亲节活动总结
2015/02/12 职场文书
警告通知
2015/04/25 职场文书
2016入党培训心得体会范文
2016/01/08 职场文书
idea 在springboot中使用lombok插件的方法
2021/08/02 Java/Android
使用logback实现按自己的需求打印日志到自定义的文件里
2021/08/30 Java/Android