今天碰到了一件很郁闷的事情,上午本来很开心的安装好了Zend Debug的,可是下午不知道出现什么问题,一直弹出错误提示,很莫名其妙,严重影响了工作效率。
比如类似:org/eclipse/php/internal/debug/core/preferences/PHPProjectPreferences,或者org.eclipse.debug.core.DebugException:总是感觉和debug相关的错误。
莫非上午设置了什么内容,导致了下午的问题,然后搜索了很多地方,包括zend的官方论坛,http://forums.zend.com/viewtopic.php?f=59&t=69053,
类似这样的:
Error creation extension for extension-point org.eclipse.php.internal.debug.daemon.communication
Plug-in com.zend.php.debug.core was unable to load class com.zend.php.debug.core.communication.AdvancedDebuggerCommunicationDaemon.
An error occurred while automatically activating bundle org.eclipse.php.debug.core (292).
非常吐血,我重新安装了ZS,删除了C:\USER\.zendstudio\等下面的内容,重新安装了一个新的版本,依然出现类似的问题,问题到底在哪?
通过部分类似的帖子:
http://blog.csdn.net/yangfeitarena/article/details/4323778
考虑可能有java版本的问题,我下载的ZS是继承了JAVA环境的,似乎看起来是1.6,而我本机上面安装的是1.7,而且系统总是提示我查看log错误日志,我一直
不知道,错误日志在哪里。开发碰到了天花板,效率极速下降。
经过仔细的观察, 既然重新软件也不行,一定是和软件不相关的地方出现了问题。我大胆推测可能是文件所在的目录有文件出现bug。而且我突然发现,如果我
切换一个workspace,没有发现错误。大致明白原因了。
解决方法:
(1)删除当前目录下所有和ZS有关的文件,这样我就发现了E:\.metadata\.log文件,这个时候我的根目录是在E盘。
(2)重建工程
大致方法如下:
【解决方案】在本地已经搭建过了Zend Debug的环境,调试起来很方便,关键是在接触新的框架时,能够跟踪整个流程,这样对框架的理解会带来很大的便利。于是考虑是否可以在我们的cloud搭建Zend Debug的远程调试呢?经过搜索后,找到了一些方案,在今天上午进行搭建测试后,it works! 方法如下,给大家提供一点参考,希望对某些同事带来一点帮助。
前期准备:Zend Studio 9.0.2(就用最新版),需要的同事可以找我或者zend官网下载,然后进行破解,方法见我的博客:http://blog.csdn.net/jallin2001/article/details/7098316,在ZS中内置集中了XDebug和Zend Debug,推荐使用Zend Debug。另外可以下载FF的插件ZendStudio Toolbar 2.6,截图如下:
该插件可以方便的启动ZS的调试,页面性能测试等功能。最关键就是下载ZendDebugger-v5.2-linux-glibc23-i386.tar.gz(见附件),这个是linux版本的,具体操作方法:
(1) 解压ZendDebugger-v5.2-linux-glibc23-i386.tar.gz到任意目录,解压后的截图:
(2) 查看自己服务器的PHP版本,比如当前cloud的版本为5.2.14,复制5_2_x_comp文件中的到php的模版安装目录,
可以通过phpinfo()查看extension_dir的目录,就是模版安装目录,打开php.ini,可以在文件的结尾输入:
zend_extension=.so的存放目录,可以全路径,或者cp到extension_dir目录,直接写zend_extension=ZendDebugger.so
zend_debugger.allow_hosts=为允许的客户端的IP地址,这里写上大家的内网IP,比如我的为10.8.6.28,深圳同事可以写自己的内网IP,
(如果深圳同事需要使用该调试,可以在这里添加上自己的IP地址进行测试)
Zend_debugger.expose_remotely=always
(3) 重启服务器,/usr/local/apache2/bin/apachectl -k graceful进行优雅重启,执行phpinfo(),应该就可以看到,这样表示服务器调试开始支持
(4) 对ZS的配置,这里比较关键,我直接用截图的方式让大家看的更清晰,这里是PHP Servers的所有服务器列表,可以自行进行添加
填写服务器的名字和对应的URL,可以直接用IP,也可以通过域名的方式,通过域名的方式,需要DNS解析,可以在Tunnel中添加
IP地址,或者在系统的hosts中添加虚拟地址,10.6.224.192 cloud.ied.com,然后ZS工具栏中的RUN->Debug As->PHP Web Application
填上自己想要的远程调试的url地址,启动
(5) 这里是远程调试的关键原理,由于远程调试是通过特定的接口,使用本地的ZS与远程的服务器进行通信,调试信息的展示需要在本机显示,
所以这里需要在本地有远程调试的代码模版,而且需要和远程一致,如果有不一致的情况,调试会出现错误,尽管本机理论上正确,实际上
本地的代码只是远程代码的一个引用,这点尤其在使用PHP的require,include等方法时,特别明显。一定需要使用远程的正确路径,否则
代码执行中会出现文件不存在等错误,影响了正常的调试。
本地调试更简单,方法和上述类似,只要想象本地服务器就是远程服务器即可。如果大家在实际使用中有什么问题,欢迎随时和我讨论,希望能带来一些帮助,谢谢!
(一旦你看到这样的界面,恭喜,远程调试成功,祝你好运!)