今天学习了php 的 xdebug调试工具,感觉很强大,从一点不会到慢慢了解,翻阅了很多资料,也算是跋山涉水,翻山越岭了,为了避免再有像我这样的新手学习此知识点时遇到困惑,特把今天看到的一些优秀文章贴下来,供大家参考
xdebug使用参考文档
phpstorm 使用帮助文档
http://www.jetbrains.com/phpstorm/help/getting-help.html
xdebug
百度百科
xdebug
的调试日志分析工具
WinCacheGrind.exe 下载
原文链接
xdebug可以控制PHP程序的执行,这意味着xdebug可以在任何时候暂停或者恢复正在运行的PHP程序。当PHP程序被暂停的时候,xdebug可以获取到程序的相关信息,比如变量的值等。xdebug也可以修改一个变量的值,然后再恢复暂停的程序,让其继续运行。
xdebug配合IDE进行可视化调试的过程(类似于VisualStudio单步调试)被称为“远程调试”,是因为调试时有一个Server(xdebug)和一个Client(IDE),所以在调试的时候,被调试的PHP程序和调试PHP程序的IDE可以不在同一台电脑上。
xdebug在进行远程调试的时候扮演一个Server的角色,它会在一个指定的端口(默认是9000)等待IDE的连接。目前有2种通信的协议,GDB和DBGp,其中DBGp是DBG的取代协议。IDE在执行调试的时候,给xdebug发送需要执行的命令,xdebug接受到命令后执行,然后将执行的情况和获得的PHP程序运行信息返回给IDE。现在很多IDE都实现了与xdebug通信的协议,比如Eclipse PDT。
Xdebug远程调试有2种方式:
1 req:在PHP程序开始执行的时候,xdebug与IDE建立连接。
2 jit:在PHP程序执行到断点处或者遇到Error的时候,xdebug才与IDE建立连接。
开启xdebug远程调试需要通过GET, POST或是cookie的方式传入一个XDEBUG_SESSION_START变量,XDEBUG_SESSION_START变量的值代表一个session的名称。通过这种形式,xdebug可以分辨出不同的session。如果要结束一个session可以通过同样的形式传入一个XDEBUG_SESSION_STOP。
如果使用Eclipse PDT,你可以不用关心这些参数,Eclipse将会为你搞定这些问题。
2 PhpStorm调试 PHP Web 应用
当项目越来越复杂,排错就越发困难。你以为代码是这么运行的,但就是有未想到的功能导致流程变得不可捉摸。此时我们需要调试啊调试... PhpStorm 是一款优秀的 PHP IDE,排除其 Java 系出身导致的资源占用情况不理想外,其功能和易用性是毋庸质疑的。 好,再说下去就是软文了。 PhpStorm 内建了 Zend Debugger 和 Xdebug 支持,使用简单的配置我们就可以开始调试代码了。我们以 Xdebug 为例来说明下
一、工具介绍
1.PhpStorm 是 JetBrains 公司开发的一款商业的 PHP 集成开发工具。PhpStorm是一个轻量级且便捷的PHP IDE,其旨在提供用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查。可随时帮助用户对其编码进行调整,运行单元测试或者提 供可视化debug功能。本文使用的时6.0版本,个人觉得4.x-6.x的界面和设置都没有太大的变化,使用起来应该和6.0版本的没有太大区别。
2.WampServer是 Apache Web服务器、PHP解释器以及MySQL数据库的整合软件包。免去了开发人员将时间花费在繁琐的配置环境过程,从而腾出更多精力去做开发。在 Windows下将Apache + PHP + MySQL 集成环境,拥有简单的图形和菜单安装和配置环境。PHP扩展、Apache模块,开启/关闭鼠标点点就搞定,再也不用亲自去修改配置文件了,WAMP它会 去做。再也不用到处询问PHP的安装问题了,WampServer一切都搞定了。这个软件是完全免费的,可以在其官方网站下载到最新的版本。本文使用的是 WampServer(32bits & PHP5.3)2.2e版本。
3.Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况。本文使用的是WampServer2.2自带的扩展。
二、调试环境配置
开启Xdebug
启动WampServer 打开菜单 选择PHP >> PHP设置 >> 选择Xdebug的三个选项依次点击开启功能,选择后WampServer会自动重启,打开成功后三个选项前会打上对勾标志。
或者手动修改php.ini文件
打开方式如下:
将文件拉到最下面,修改xdebug.remote_enable,xdebug.profiler_enable ,xdebug.profiler_enable_trigger的参数值,由off改为on
保存文件重启所以服务。
2. PhpStorm 设置
新建空白项目:
新建index.php
项目文件右键 New >> PHP File, 输入index
在文件中输入以下代码
echo 'Hello world';
$a = 20;
$b = 40;
$c = $a + $b;
echo $c.'
';
echo 'Hello world';
然后字代码中添加断点
配置php调试
打开settings面板,选择PHP>>Servers, 点击右边窗口的"+",输入Name, Host参数,同时勾选,Use path mappings,选择OK
选择工具栏中的下拉三角,打开 Edit Configrations
点击"+"PHP Web Application填写Name, Start URL参数,选择 Server,Browser参数,选择OK
选择Run >> Start Listen PHP Debug Connections,工具栏的电话图标由红变绿;
调试,Run >> Debug 'xdebug' 此次弹出你之前选择的浏览器
PhpStorm 进入调试界面
控制台报错,断点异常,控制台提示如下错误:
Remote file path 'xxxxx' ……………
单击Click to set up path mappings
单击编辑按钮,
选择要调试的PHP文件,选择OK。
此时错误消失,如图:
注意:如果你调试PHP断点有多个PHP文件的话,每一个包含断点的文件都要添加到mapping路径当中。
单击停止按钮
重新调试,单击调试按钮
这时进入正常的调试流程,选择调试工具栏上的按钮进行调试
调试之后查看浏览器输出结果
之前的错误可以通过,配置server时避免,配置方式和错误处理相同
注意:如果你调试PHP断点有多个PHP文件的话,每一个包含断点的文件都要添加到mapping路径当中(偷懒的话,可以直接对项目根目录htdocs做映射)。
3
原文链接:
XDEBUG配置:
1.安装 xdebug 略了。网上有很多资料。
重点写php.ini的配置
[XDebug]
zend_extension="/usr/lib/php5/20090626+lfs/xdebug.so"
xdebug.default_enable = On
xdebug.collect_params = On xdebug.remote_connect_back = On //如果开启此,将忽略下面的 xdebug.remote_host 的参数。 <一台webserver有多个开发者的工作目录的时候使用,如:p1.xx.com,p2.xx.com,p3.xx.com 。。。等。 >
xdebug.remote_host = 192.168.59.104 //注意这里是,客户端的ip<即IDE的机器的ip,不是你的web server>
xdebug.remote_port = 9900 // 注意这里是,客户端的端口<即IDE的机器的ip,不是你的web server>
xdebug.remote_enable = On
xdebug.remote_handler = dbgp
xdebug.remote_log = "/var/www/xdebug/xdebug.log"
xdebug.remote_req = req
xdebug.auto_trace = Off
xdebug.remote_autostart = On
xdebug.show_exception_trace = 0
xdebug.collect_vars = On
xdebug.collect_return = On
xdebug.collect_params = On
xdebug.var_display_max_depth = 15
xdebug.show_local_vars = 1
xdebug.dump_undefined = 1
xdebug.profiler_enable = 1
xdebug.profiler_output_dir = /var/www/xdebug
PHPSTORM 配置:
1.file->setings->php|Debug右侧。xdebug的那一块。 设置Debug port:9900(这里设置 的是,xdebug 吐出的debug信息,通过本机的什么端口传输。)
2.file->setings->php|Servers 右侧。 host: 你的web服务器的域名或ip ,端口, 下面的 use path mapping 意的是,你的项目的目录,对应服务器上的,什么目录? 这里一定要设置哦!不然,会发生找不到文件而出错,导至调试终止。
3.Run->Edit Configurations-> 增加一个 PHP WEB APPlication 的调试点。 右侧: server 选择你上面建立的server. starturl 设置你的入口文件。
至此,配置完毕!
4使用phpstorm和xdebug实现远程调试
vs的断点调试功能很强大有木有,能查看所有变量有木有。php调试很麻烦有木有,echo,var_dump写得你想吐了有木有。想体验一下ide调试的快感吗?那就来使用xdebug吧。
1.原理:xdebug是一款php调试插件,支持远程调试,就是在php文件运行的时候,能通过tcp协议,来发送调试信息到远程端口,ide在收到调试信息的时候,可以向xdebug发送单步运行,中止运行,运行等命令。这样就实现了vs那样强大的调试功能。
2.需要的东东:一款支持xdebug远程调试的ide,这里使用phpstorm,是一个灰常强大的phpide。另外需要一款你的php对应版本的xdebug。
3.步骤:先下载xdebug,请在官网下载你的php版本对应的xdebug
如果你不知道你的版本呢,请echo phpinfo();哈哈,然后把整个页面复制到http://xdebug.org/wizard.php 这个页面的框里,然后他会自动分析你的php版本,然后告诉你放在哪个文件夹,我们放在php的拓展文件夹就好了,我是D:\xampp\php\ext
然后配置php.ini,在最后加上这个:
[xdebug]
zend_extension = D:\xampp\php\ext\php_xdebug-2.2.0-5.3-vc9.dll
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.idekey=phpstorm4
xdebug.remote_autostart=1
解释下,第一行是加载xdebug,romote_enable是开启远程调试,下面是远程调试的参数,ip,端口,识别字符串,自动远程调试。
然后重启apache,xdebug就加载成功了,为神马网站会慢很多呢,因为你开启了自动远程调试,每一次访问都会连接一下定义的ip和端口。哈哈。这个看自己取舍吧。
然后就是配置ide了,
选择editconfig,然后按这样配置:
在php remote debug里面配置好服务器 127.0.0.1 80 xdebug,然后设置好识别字符串。这里是我们已经定义了的phpstorm4,然后保存。这样就配置好了。
4.使用:现在我们就可以开始调试了。
,点击者按钮,开始监听远程调试,当变成绿色表示监听成功。下面我们设置一个断点。
,看到木有,有木有有木有很强大,可以一步一步执行哦,F7单步进入函数,F8是单步跳过函数。有不明白的留言哦。