PHP编辑利器Notepad++下Xdebug加DBGp调试环境搭建教程

又到了夜深人静的时刻了,这篇帖子是记录了一下昨天夜里的奋斗,希望对其他战友有所帮助。

       《PHP编辑利器Notepad++下Xdebug加DBGp调试环境搭建教程》
      
        Notepad++ 是PHP方便的编辑工具,以功能强大和插件丰富著称,既没有大型IDE的功能密集恐惧症,又远比微软坑爹的notepad方便使用,是在是初学者上手 和 大牛装13的居家旅行必备产品。不过目前我们使用的Notepad++是没有调试功能的。这是兄弟连培养大家各种手写的一片苦心。不过昨天下午写那个3行换色的Table,一分钟写完竟然检查了十分钟各种符号和错误,对于已经被Vs宠坏的孩子,这简直是赤果果的浪费时间。我可以接受没有IDE,但是起码有个Debug嘛,不是已经说好为Debug奋斗一辈子嘛(呸呸呸,童言无忌随风飘去,我呸!),呵呵。于是我决定和神谈谈。
      
        我【request】神啊,赐予我debug吧,还要可以在Notepad++这篇盐碱地上运行的的;
        神【response】xdebug啊,还有dbgp哦亲~~;
        我【request】哪里可以买到?;
        神【response】 null;
        我【request request request request request】
        神【response】null!

       好吧我自己搞定吧。

       不开玩笑了,首先普及一下概念。对于已经熟悉了各种一体化开发工具的孩纸们(特别是Visual Studio这种一点F5,断点就自动亮起来的全能保姆),开源世界的Web开发的编译调试环境是需要一点时间来习惯的。首先是概念,Web开发的编译调试环境是由至少两部分的组成的,Debug Client和Debug Server。这也很好理解,因为你要调试的代码是在服务器运行的,所以在服务器端的相应位置得有一个你的内应,是不?而Debug Client就更好理解了,是和你的编辑环境集成在一起,提供断点、逐行、Watcher等调试功能的。由于Web开发环境的开放性,所以Debug Client和Debug Server其实是可以灵活搭配的。你既可以选择Xdebug或者Zend debug作为服务器端,也可以选择任何一款遵守BDGp协议的插件与Eclipse、Netbeans、VIM或者Notepad++进行集成。所以你的选择搭配的可能性是N*M的组合。
      
       概念是容易理解的,实践是非常艰苦的。首先是寻找和配置Xdebug。Xdebug是XXX基金会下著名的开源项目,域名用的都是牛逼闪闪的.org结尾。找到下载区域,哇,几百个Xdebug下载地址牛逼闪闪的列在哪里。到底那一款猜适合我呢?首先应该看看我们安装的php是什么版本呢。我们使用的 AppServ是一个由泰国友人开发的简单易用的集成化LAMP环境,所以一路下一步以后大部分战友也不知道自己的安装的是个啥。于是招呼小黑屏。 CMD,键入php.exe -v。恩呢,返回PHP 5.2.6,嗯,很好,泰国兄弟很怀旧。再看看自己的操作系统是什么版本,这个就不用我说方法了。总之我的是坑爹的64位Win7(繁体中文外挂简体中文包),重度盐碱地。有了这两个关键参数,上Xdebug找找。这回不好了,凡是支持32位的都不支持PHP5.2,反过来,支持PHP5.2的就没有64 位的。这叫我如何是好........按照Geek的精神,我们现在应该做的是手工配置AppServ中的PHP5.2升级到5.4,不过现在是已经是半夜12点了,Geek明天早晨还要上课,迟到了还要罚五块钱,上课睡觉若是被晓光老师窥到.....啊呀不敢想。于是无耻的卸载了AppServ,找到最新版集成PHP 5.4.6的Xampp,无耻的安装鸟~~
      
       下一步,找到匹配PHP5.4的DLL。这里有个插曲,每个Dll都分为32位和64位两个版本,每个版本又分默认版和TS版(有蓝光版不),每个版本又分为VC6和VC9两个版本(就是用VS6和VS2008 Release出来的不同版本),这个你根据自己的情况找到适合自己的就OK了(说起来容易做起来难,这个耽误了一个小时)。找到相应的Dll后,将其拷贝到PHP的ext的目录中。找到php.ini(AppServ和Xampp是不同的,大家根据自己环境去找),在相应位置添加如下代码:“zend_extension = "你的路径\ext\php_xdebug-2.2.1-5.4-vc9.dll”。注意,如果你是5.3版本以前,应该写成 zend_extension_ts。保存,重启apache。编写一个最简单的小php文件,输入<?php phpinfo()?>,运行,你会看到PHP info页面会多出一个有关Xdebug的代码段,如果你看到,OK,你成功了。
        

如果配置成功,奖励你点亮Xdebug白钻图标
    

        当然,这是你人品爆棚的情况下,如果各位战友问我没有看到怎么办呢?我只能告诉你:“欢呼吧!作为一个程序员,Bug爆发的时候就是组织考验你的时刻!当全公司出的所有Bug都只有你一个人能搞定的时候,就到了你考验组织的时刻了”。所以请怀着愉悦的心情,迎接看不到Xdebug的phpinfo页面吧。开个玩笑而已。说上面这段话,这个,其实是因为事实上,我也没有看到。忍住困意,开始排错。首先看apache的access日志和error日志,一所所获,再看php日志,还是一无所获。作为如此著名的开源产品,一个错都不报太有失水准了吧。反复确认自己的方法和代码没有问题的情况下,大胆推断不是自己的问题。好吧,既然我没有问题,就让我来拷问一下你PHP吧。

       召唤小黑屏,cmd,准备用“php.exe --rz xdebug”拷问一下这个插件是否存在。结果非常意外,小黑屏返回一个“Failed loading ...xdebug.dll”。哎呀,对于黑夜中求索的程序员,这句返回就好像李嘉欣跪在我面前对我说:哥,带我走吧,我和许晋亨不是真的。哈哈,给自己一拳以便从双重梦境中醒来。说正事,首先这短短的几个字内涵非常丰富。它印证了我的自信,我的配置是没有问题,php已经按照我的需求去加载相应的dll 了,只是dll本身不给力启动不起来而已。开始拷问dll本身,是因为没有注册点(不至于是拿COM写的吧,那还怎么跨平台)?招呼regsvr32注册一下?果然失败。64位系统不兼容?我下载的是64位版本啊?难道是因为VC9 release出来的dll不能在win7 64上运行?这个怀疑是有根据的,因为理论上VC9可以选择MFC和.NET Framework两种Release方法。召唤反编译,过程掠过,这个DLL是MFC的版本,应该没问题,那应该大胆的选择VC9(VC6在WIN7上反而兼容性不好)。只有穷举了,把支持的版本全下下来,挨个尝试。当我尝试到32位VC9非TS版的时候,小黑屏突然不报错了。唉呀妈呀,这叫一个坑爹啊。再次启动phpinfo,Xdebug如约而至。OK,组织,这个山头我攻下了。

         不要高兴的太早,我们现在只是完成了Debug Server的配置部分。Debug Client的配置还没有开始。开始寻找DBGp for Notepad++的插件。DBGp for Notepad++是个著名的开源项目,理论上SourceForge应该是有的。招呼Google,果然找到,点击进入,404???我晕,难道 SourceForge挂了?我按着自己砰砰直跳的心脏,心想这种可能性应该不大。嗯,根据在镇上多年的生活经验,应该是因为镇里八十大给Wall了吧。好吧,不要逼我,召唤python小蟒蛇,开始 翻122墙。果然,随着goAgent小黑脸上一阵代码滚动,SourceForge亮闪闪的展现在我的面前。 SourceForge的用户体验依然那么坑爹,终于下载好以后。将相应的Dll保存到Notepad++相应的目录下。重启Notepad++,你的工具栏 - 插件菜单下会出现一个美丽的名字:bdgp。进入Config菜单,配置主机为本机127.0.0.1,remoteserver 和 localserver都指向php安装本地目录。保存,重启,这时候已经搞定了。但是现在还是开始不了调试的。理论上如果希望调试方便,可以在 Firefox下安装xdebug helper插件,不过firefox官方市场把这个插件下线了,第三方市场去寻找我又太困了,所以我选择用手工调试一下。在目标php页面后加上 “Xdebug_Session_start=1”(有个问号哦)。本地加断点,N次失败以后,OK,捕捉成功。
不过老这么调试多费血啊。得想个办法让它自动运行一下。打开php.info。看到Xdebug段有如下几个属性:autostart=off,remotestart=off。好吧,按照我“多年编写解释器”的经验(我呸),这个属性应该是php内置的参数,如果你不设定它就走默认值,你设定他就跟你走。好吧,妹,跟哥走吧~~让我来 override一下这两个属性吧。在php.ini中添加相关参数,保存,重启apache,调试,我靠,果然捕捉成功了。从此免费的 notepad++和仅售1998美元的Visual Studio一样,可以调试了,我哭啊。

搞定DBGp赠送debugger战马一匹,速度×10,攻防翻倍(双排座椅,你懂的)

       大家如果有兴趣,其实也是可以再AppServ中配置成功的(反正那个坑爹的32位DLL既然可以运行,那5.2也应该没有问题了),保持和教学环境的一致性。今天一夜还是很有收获的,虽然只是配置好了一个小小的Debug,可是对php的内生程序结构有了更深的了解,对PHP的内生设计思路和配置思路也有了更深的理解和解决问题的自信。这是一种和PHP设计师神交的快乐,建议大家踊跃去交。
心满意足的调戏了一把白天的代码,睡鸟.......。

后记
         其实本来只准备写个简单的教程而已,不过因为写的太简单,既对不起几个小时的辛劳,也容易误导大家:诶,怎么他那么容易就弄好了,我怎么怎么弄都弄不好?其实,我也怎么弄都弄不好............然后就弄好了。
很多战友常常在默念自己没基础或者技术不太好,这篇文章也算是鼓励一下大家把。其实坐在这个班里的每个人都是PHP的新人,否则也不会坐在这里。都是新人,还有什么号畏惧的呢。很多战友遇到问题很慌张很烦躁,其实你应该很欣喜啊(你个变态),因为锻炼自己解决问题的机会又来了。技术是会淘汰的,而解决问题的能力,是终身的。
咱们的战友们大多都是期望成为程序员的新人,其实作为程序员,技术知识只是一个必备的选项而已。技术并不可靠,它就好像一个昂贵的数码产品,不消几年就会变得过时而淘汰。而强大的学习能力、自信心 和 解决问题的执着 才是大家终身的财富,才是大家逢山开路遇水搭桥的终身利器。有个大牛说过,技术做出来不就是给人用的嘛,怕啥,不要被我看到,看到我就能学会....。每个牛逼闪闪的今天都是踏着苦逼兮兮的昨天走过来的。只有时刻心怀“我不去搞定谁去搞定”的气势,才能达到“我都搞不定谁还能搞定”的境界。与大家共勉。
原文地址: http://bbs.lampbrother.net/read-htm-tid-149475.html

<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(201) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值