本文介绍如何使用PhpStorm集成xdebug在本地开发环境进行断点调试的技巧。 我配置的环境是:Windows10 + PhpStorm10.0.1 + PHP5.6。

1. 下载xdebug的扩展,并配置到php.ini

zend_extension = d:\dev\php5.6.28\ext\php_xdebug-2.5.0-5.6-vc11-x86_64.dll
xdebug.remote_enable = On
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp

第一行是加载xdebug的扩展,路径需根据自己的环境修改。

第二行是开启远程调试;

第三行是配置进行调试的主机地址;

第四行是配置进行调试的主机上面会监听的端口;

第五行是配置调试连接通信使用的协议,这行不配置也没关系,默认值就是dbgp。dbgp跟http一样,是一种通信协议。

根据remote_host跟remote_port,xdebug就知道该把调试连接发送到哪里。

2. 配置PhpStorm中的php解释器

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

3. 配置PHP的Debug

以上截图是PhpStorm的默认值,红框部分的Debug port应该与php.ini中的xdebug.remote_port保持一致。所以只有在php.ini中xdebug.remote_port不是9000的时候,才需要去这个地方设置。

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


方法一:最原始的方法。

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

在工具栏上找到如图所示的按钮,点一下就开启了。

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

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

访问后就会进入断点:

这个方法中:

第一步的目的是为了让PhpStorm开启对xdebug.remote_port端口的监听,以便接收到xdebug发出的调试请求。

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

只要在http(get或者post)请求中包含XDEBUG_SESSION_START参数或者XDEBUG_SESSION这个cookie中,这个请求就会尝试进入调试环境。只需要在第一次请求调试的时候加上XDEBUG_SESSION_START的参数,接下来一个小时内都不需要再加这个参数。如果想要停止调试,只要把调试端口监听关闭即可:


方法二:跟方法一类似,只不过在第三步的时候,不需要在请求后边手动添加XDEBUG_SESSION_START参数,而是借助浏览器的插件来添加。

如果使用chrome浏览器,可以找到下面这个扩展并安装:

安装完成后,在浏览器地址栏旁边就会出现这个插件的小按钮:

           

1)先进入要调试的页面,不加XDEBUG_SESSION_START参数

2)点击刚安装插件的按钮,随意输入Xdebug Key,再点击Set跟Start XDebug Session按钮,页面就会刷新进入调试环境。

这个方法跟方法一本质上没有区别,就是简化了输入XDEBUG_SESSION_START参数的过程而已。


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

本文演示的是xdebug用于本地调试的场景,实际上xdebug还可应用于远程调试的场景,比如说项目已经上线到了生产环境,通过xdebug的远程调试功能,就能在本地对生产环境的代码进行调试。目前我还没遇到这种调试的需求,所以也没有去尝试这个方式的具体实现过程,我在xdebug官方的文档中看到了类似的介绍,等来将来有必要的时候再来研究吧。

参考:

https://xdebug.org/docs/remote

https://xdebug.org/docs/all_settings

PhpStorm集成xdebug进行断点调试的更多相关文章

  1. 最新为Phpstorm配置xdebug 进行断点调试

    额  ,曾经写过一个,现在发现不咋好使了 ,你说咋整,下载xdebug的时候 还得注意系统是32位还是64位,而且一堆下载文件不知道是哪个. 额,所以我现在发现有个更好的方法,啥也不下了 直接配把  ...

  2. 使用 PHPStorm + Xdebug 实现断点调试(二)

    一.配置 Xdebug 配置 Xdebug 相关参数,在 php.ini 文件中新增如下配置,如果没安装的,请参考<PHP 安装 Xdebug扩展>: [xdebug] xdebug.re ...

  3. PHPstorm破解方法及xdebug的断点调试

    原文地址:http://www.php.cn/php-weizijiaocheng-381903.html 相信用PHPstorm的程序员肯定很多,令人头疼的是下载的PHPstorm是有使用期限的,小 ...

  4. 使用phpstorm和xdebug实现远程调试

    使用phpstorm和xdebug实现远程调试 2012-05-23 10:06:35 vs的断点调试功能很强大有木有,能查看所有变量有木有.php调试很麻烦有木有,echo,var_dump写得你想 ...

  5. 史上最佳 Mac+PhpStorm+XAMPP+Xdebug 集成开发和断点调试环境的配置

    在上一篇 PHP 系列的文章<PHP 集成开发环境比较>中,我根据自己的亲身体验,非常简略的介绍和对比了几款常用的集成开发环境,就我个人而言,比较推崇 Zend Studio 和 PhpS ...

  6. [转]史上最佳 Mac+PhpStorm+XAMPP+Xdebug 集成开发和断点调试环境的配置

    本文转自:https://www.cnblogs.com/lishiyun19/p/4470086.html 在上一篇 PHP 系列的文章<PHP 集成开发环境比较>中,我根据自己的亲身体 ...

  7. mac OS X下PhpStorm+MAMP PRO+Xdebug+FireFox集成开发和断点调试环境配置

    一.环境及软件 1.macbook pro 2.Phpstorm 3.MAMP PRO 4.FireFox 二.环境搭建 1.PhpStorm导入项目 下载PhpStorm并安装,网上随便找个注册码即 ...

  8. phpstorm xdebug 无法断点调试问题

    最近用phpstorm+xdebug调试一段php代码的时候莫名其妙的无法切入断点调试 本地用的php集成环境是UPUPW ANK V1.1.7 64Bit 选择了集成环境中php版本为7.1.x 搞 ...

  9. 极简配置phpstorm+xdebug进行断点调试

    以前调试的时候各种var_dump()就能得到结果,现在入手别人开发的工作,由于不了解业务和代码逻辑,又要去修改bug,就造成了修改bug效率低,所以又拾起来了xdbug,顺便总结了一下phpstor ...

随机推荐

  1. C#基础篇 - 理解委托和事件

    1.委托 委托类似于C++中的函数指针(一个指向内存位置的指针).委托是C#中类型安全的,可以订阅一个或多个具有相同签名方法的函数指针.简单理解,委托是一种可以把函数当做参数传递的类型.很多情况下,某 ...

  2. Discuz论坛黑链清理教程

    本人亲测有效,原创文章哦~~~ 论坛黑链非常的麻烦,如果你的论坛有黑链,那么对不起,百度收录了你的黑链,不会自动删除,需要你手动去清理. 什么是黑链 黑链,顾名思义,就是一些赌博网站的外链,这些黑链相 ...

  3. go语言:多个[]byte数组合并成一个[]byte

    场景:在开发中,要将多个[]byte数组合并成一个[]byte,初步实现思路如下: 1.获取多个[]byte长度 2.构造一个二维码数组 3.循环将[]byte拷贝到二维数组中 package gst ...

  4. 移动BPM解决方案分享

    畅通开放  无边界的渠道 效率倍增  更高效的处理方式 即时共享  更强大的决策能力 各种终端应用 帮您实现:新任务通知.任务预警.催办.任务审批.任何数据汇总提醒消息通知...... 短信 客户端: ...

  5. Android Studio —— 创建Menu菜单项

    大多数android程序的右上角都会设置一个菜单按钮比如微信的界面右上角的加号. 这个需要在layout同级目录下新建文件夹命名为menu,再右击新建的menu新建xml文件:

  6. Android中Fragment的两种创建方式

    fragment是Activity中用户界面的一个行为或者是一部分.你可以在一个单独的Activity上把多个Fragment组合成为一个多区域的UI,并且可以在多个Activity中再使用.你可以认 ...

  7. A*算法应用[转]

    转自:http://www.cnblogs.com/zhoug2020/p/3468167.html 这是一篇十分精彩/易懂的博客,感谢原博主!本文通过自己的理解在原博文基础上突出一些重点字眼,句子. ...

  8. Linux基础介绍【第二篇】

    远程连接Linux的原理 SHH远程连接介绍 当前,在几乎所有的互联网企业环境中,最常用的Linux提供远程连接服务的工具就是SSH软件,SSH分为SSH客户端和SSH服务端两部分.其中,SSH服务端 ...

  9. Spring.Net在Mvc4.0中应用的说明

    案例Demo:http://yunpan.cn/cJ5aZrm7Uybi3 访问密码 414b Spring.Net在Mvc4.0中应用的说明 1.引用dll 2.修改Global文件 (Spring ...

  10. 判断一个对象是jQuery对象还是DOM对象

    今天调试一段代码的时候,看到其中一个变量,想知道它到底是jquery对象还是dom对象. 虽然直接console出这个对象,看它的内部可以判断出来.但是我想有没有什么更方便的方法呢. 后来我想到了一个 ...