Zend Studio使用zend debugger调试PHP程序

1.安装

a. 这里使用了一个zend debugger工具合集,包括了ie和firefox的控件,附件中有。
下载地址: http://pan.baidu.com/s/1i3r96Vr ,zend官方下载地址是:http://downloads.zend.com/pdt/server-debugger/ZendDebugger-5.2.14-cygwin_nt-i386.zip

解压开,内附的readme.txt说明文件。

b.通过phpinfo()看了一下自己的环境,是php5.2.3,开启了Thread Safety是开启的。

c.找到5_2_x_comp中的ZendDebugger.dll copy一份放到我的document root目录中,我使用的是D:\AppServ\www,把dummy.php也放到此处。
(5_2_x_nts_comp适用于tread safety关闭的情况)
dummy.php放入后,要保证使用你的运行url能访问,比如http://localhost/dummy.php 否则后面在ide中调试的时候连接不上。

d.打开php.ini文件,加上几句并保存:

zend_extension_ts=D:\AppServ\www\ZendDebugger.dll //注意此路径就是zenddebugger.dll实际位置
zend_debugger.allow_hosts=127.0.0.1/32,192.168.1.88/24 //ip填自己的真实ip,127.0.0.1/32是本机回环地址必不可少,另一ip填自己的网卡ip
zend_debugger.expose_remotely=always

e.重启apache,查看phpinfo(),如果有Zend Debugger一栏,说明已zend debugger安装成功。


2.IDE配置(zend studio8)
虽然zend debugger安装成功了,但是ide中却没有关联上,比如我们在ide中点一下调试按钮,ide并不知道从哪里调用。如下配置:

a. 配置zend debugger运行地址
在当前项目上点右键 -- properties -- PHP Debug ,窗口右边有php debugger ,这里选择zend debugger, 点confirgure进内页,client host/ip,比如我的dummy.php文件路径是http://localhost/dummy.php ,那我这里就填localhost或者127.0.0.1就好了。
其它的都不用管就行了,看到debug port默认的是10137,试了一下telnet 127.0.0.1 10137是通的,说明当ide启动时,debug监听了这个接口。

b.配置当前项目的运行路径
这个说白了,就是你做此项目时使用的域名,在当前项目上点右键 -- properties -- server -- 点php server进内页,默认名称不管,下面的url填上http://www.test.com 。
因为我启用了vhost,并且使用的域名是www.test.com,如果没有启用vhost使用默认的127.0.0.1或者localhost,那这里就用默认的127.0.0.1就好了。


3.调试
我现在遇到一个问题,在一个叫index.php中程序运行中得到的是错误的结果,那我们就使用debug来调试它。

A. 启用zend debugger有下面几种方法:

1.直接点窗口上的debug按钮(一个绿色虫子图标),弹出一个窗口,让输入url地址,那就手工输入,包括相应的get参数都一并输入,回车就进入debug窗口模式。
IDE窗口上可以看到当前调试的页面是www.test.com/lindex.php

2.在项目左边点想要调试的文件,右键 -- debug as -- php webpage ,也一样会跳到debug模式窗口。

3.使用浏览器控件。这种方式最简单,因为上面两种都是直接进url没有提供参数,而使用控件在问题页面一点,直接都传到ide中来了。
新版火狐安装控件会报错:"此附加组件无法安装,因为它未经验证"
手机进入about:config ,找到xpinstall.signatures.required ,设为false即可。
参照:http://jingyan.baidu.com/article/6c67b1d69fbeab2786bb1e69.html

B.打断点

在想要看到运行时结果的行号上双击,就是一个断点,当程序走到这里,会暂停。按窗口上的step over执行下一步,step return会路过当前这一步。
在这个过程中,我们可以看到当前变量的值和程序跳转的过程,查出问题。


F5 step info 单步,遇到子逻辑,也会进入一步步走
F6 step over 单步,遇到子逻辑,直接运行取结果,不会进入一步步走
F7 step return 单步,遇以子逻辑会直接跳过

标签: php打断点, php调试, zend debugger

添加新评论