今天学习了php 的 xdebug调试工具,感觉很强大,从一点不会到慢慢了解,翻阅了很多资料,也算是跋山涉水,翻山越岭了,为了避免再有像我这样的新手学习此知识点时遇到困惑,特把今天看到的一些优秀文章贴下来,供大家参考


xdebug使用参考文档

https://xdebug.org/docs/

phpstorm 使用帮助文档

http://www.jetbrains.com/phpstorm/help/getting-help.html


xdebug


 百度百科


http://baike.baidu.com/link?url=dqDS52lF2wQFZvJLWFd-iJhXUxLfbC4iRpVx6CLSGBdqg940jdyujKY34d7BoTWPbM6OGU3GLu7-Py8b43yByq



xdebug

的调试日志分析工具




WinCacheGrind.exe 下载



1   XDEBUG远程调试原理分析

原文链接

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做映射)。


phpstorm + xdebug 远程断点调试,详解。

原文链接:

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是单步跳过函数。有不明白的留言哦。