zoukankan      html  css  js  c++  java
  • phpstorm+xdebug

    Step-0、背景

    写了几年的PHP,一直都用var_dump()进行调试,但是遇到比较复杂的逻辑,很难进行追踪。这期间也用过phpstorm的xdebug调试功能,但每次再重新使用时还得继续查询资料。这里做一个简单的笔记。好记性不如烂笔头。
    参考资料如下博客:
    http://www.cnblogs.com/lyzg/p/6222111.html
    https://blog.jetbrains.com/webide/2011/02/zero-configuration-debugging-with-xdebug-and-phpstorm-2-0/

    基本原理:
    xdebug进行断点调试的关键在于:xdebug在识别到一个请求需调试的时候,就会用dbgp的协议向remote_host跟remote_port这个地址发送调试请求,当一个位于remote_host上的IDE如PhpStorm正好在监听remote_port这个端口的调试请求时,就能成功接收到调试信息进行调试。

    Step-1:安装phpstorm

    细节不详说。

    Step-2:服务器端安装PHP服务

    细节不详说。

    Step-3:服务端安装xdebug

    细节不详说。(PS:用的是公司的开发服务器,一般默认都是安装好了xdebug了。)
    安装好后,查看PHP的扩展。

    Step-4:xdebug配置

    在php.ini里面加入如下的xdebug配置,配置如下:

    上面每行解释一下:

    1、 zend_extension:这个配置为xdebug的安装路径,这个根据自己具体的安装的情况填写。
    2、 remote_enable:配置为1。
    3、remote_host:配置为127.0.0.1或者localhost。
    4、 remote_port,这个默认值为9000,如果这个端口被其它进程占用了就需要换一个。所以我换了一个9999。注意,这里的这个端口要和PHPStorm中的设置保持一致,如下图。
    5、idekey设置为PHPSTORM,这个字符串在启动调试的时候要用到,后面再解释这个。

    Step-5:验证配置信息

      使用phpinfo看一下输出,查看输出里面是否有xdebug的内容。注意,如果之前有配置过比如zend debugger之类其它的调试工具,需要先从php.ini里面把其它的调试配置去掉,不能同时配置两个调试工具。


      
      
      

    Step-6:配置PhpStorm中的php解释器

      依次点击菜单File-Settings,打开如下菜单:

      至此,PhpStorm应用xdebug的调试环境就已经配置好了。接下来看看如何使用断点调试,方法主要有两种(step-7步和step-8步)。
       

    Step-7:phpstorm断点调试

    1、主动开启PhpStorm对调试端口的监听。

    2、找到合适的代码位置打断点。

    3、访问对应的请求,并在请求地址后面添加XDEBUG_SESSION_START的参数,如:

    XDEBUG_SESSION_START参数的值可以随意写,它的作用在于开启一个http的调试会话。这个会话类似平常的登录会话一样,xdebug会把这个值写到cookie里面去。

    只要在http(get或者post)请求中包含XDEBUG_SESSION_START参数或者XDEBUG_SESSION这个cookie中,这个请求就会尝试进入调试环境。只需要在第一次请求调试的时候加上XDEBUG_SESSION_START的参数,接下来一个小时内都不需要再加这个参数。

    激活服务端的调试器。(不是必须的)
    通过在请求里面带上 XDEBUG_SESSION 参数,并且把参数值设置为之前XDebug里面配置的“idekey”的值,就可以激活服务端的调试。
    例如,可以在POST或者GET参数里面加上 XDEBUG_SESSION=PHPSTORM,服务端就会启动调试了。 比如我们要调试 http://www.abc.com/test.php,那么访问链接http://www.abc.com/test.php?XDEBUG_SESSION=PHPSTORM 就可以启动调试了。

    具体的原理是这样的:服务端收到请求后,xdebug会检查参数里面的XDEBUG_SESSION值是否等于“idekey”的值,如果相等,那么就说明需要调试,否则就不调试。这个参数也可以设置在Cookie里面。为了调试方便,可以把下面的两端脚本作为链接收藏到书签栏,每次如果要调试就调用第一段脚本在Cookie里面写入XDEBUG_SESSION参数,如果要停止调试,那么就调用第二段脚本移除XDEBUG_SESSION参数的值。

    如果想要停止调试,只要把调试端口监听关闭即可:

    4、访问后就会进入断点。如上面的第二小步所示。

    Step-8:chrome浏览器断点调试

    1、组件安装
    Chrome组件断点调试不需要在请求后边手动添加XDEBUG_SESSION_START参数,而是借助浏览器的插件来添加。

    2、参数设置
    点击右上方的组件按钮,右键点击“选项”进行设置。

    3、开启调试模式

  • 相关阅读:
    WinCE启动次数的记录
    基于eclipse创建android的helloworld工程
    Android上常见度量单位【xdpi、hdpi、mdpi、ldpi】解读
    广东华信金溢信息技术有限公司(Android+WINCE)
    深圳华禹工控(Android+WINCE)
    广州捷宝科技(Android+WINCE+JBOS)
    WinCE NAND flash
    C#验证是否是真的图片格式
    解决Jquery对input file控件的onchange事件只生效一次的问题
    IE input file隐藏不能上传文件解决方法
  • 原文地址:https://www.cnblogs.com/jaspersong/p/8040696.html
Copyright © 2011-2022 走看看