phpstorm xdebug本地调试断点不生效_Xdebug 的使用

v2-8ec34fe98bf61910e05f7f592d793cfb_1440w.jpg?source=172ae18b

Xdebug 的使用

1 介绍

Xdebug官网:https://xdebug.org/。 Xdebug 是一个开源的PHP调试器。以PHP扩展的形式安装到PHP中。典型功能有:

  • 单步调试,single step debug
  • 调试版的 var_dump()
  • 增加了错误,异常的 stack traces
  • 可记录每个函数调用和变量的分配
  • 增加了一个分析器 profiler
  • 为 PHPUnit 提供了一个代码覆盖(code coverage)功能

2 安装

下载

下载xdebug的PHP扩展,下载地址:https://xdebug.org/download.php。

根据PHP版本、是否为TS(线程安全)和系统位数选择合适的版本。

加载扩展

编辑 php.ini 增加:

zend_extension=d:servicesphpextphp_xdebug-2.7.0beta1-7.3-vc15-x86_64.dll

[Xdebug]
xdebug.remote_enable = On

安装成功

运行 php -m 检查 xdebug 扩展是否安装:

> php -m

[Zend Modules]
Xdebug

或者重新启动 web服务器,通过 phpinfo 确认xdebug模块已经安装,若安装,phpinfo会存在xdebug模块,例如:

v2-c68a5b2789259eaa392a7214f28292e3_b.png

v2-870ba618b9afbe150c32fdab96838a3e_b.jpg

Xdebug扩展配置请参考:Xdebug扩展配置,http://php.hellokang.net/xdebug-options.html

3 PHPStorm +

PHPStorm版本:2018.3.2

1,选择安装了 xdebug 扩展的 PHP解释器。配置项 File > Settings > Languages & Frameworks > PHP,如下图所示:

v2-53dd8cac9888769ef2d2112a421f47f6_b.jpg

2,配置 PHPXdebug 调试器信息。配置项 File > Settings > Languages & Frameworks > PHP > Debug,将 Xdebug 的相关信息与PHP的xdebug的扩展保持一致,主要是 debug port,如下图所示:

v2-5bdd3abdb07274e7bc205a27566bdf8d_b.jpg

4 单步调试

以上配置信息配置完毕后,就可以实现单步调试了。两个步骤:

  1. 单击编辑器代码的左侧空白添加断点。
  2. 调试运行代码。可以 Run > Debug;或者 Alt+Shift+F9;或者代码 右键 > Debug

如图所示:

v2-2466cb012dd16426abf6f3c868e051c2_b.jpg

5 调试原理

  1. 安装了Xdebug扩展的PHP解释器在解释PHP代码时,Xdebug扩展会形成调试信息。
  2. xdebug扩展会将调试信息发送到配置的TCP地址:<xdebug.remote_host>:<xdebug.remote_port>。通常就是我们的IDE(例如PHPStorm)。
  3. IDE接收到调试信息后,展示给coder。
  4. 单步调试的实现就是每当PHP解释器执行步代码后,就会将调试信息发送到目标地址。

参考执行的调试命令为:

> php.exe -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1 debug.php

6 var_dump()

Xdebug 重写了PHP的 var_dump() 函数。Xdebug 的版本使用不同的颜色来展示不同类型,以及增加了数组元素和对象属性的数量、最大深度和字符串长度的限制。相关的配置是:

  • xdebug.var_display_max_children
  • xdebug.var_display_max_data
  • xdebug.var_display_max_depth

7 堆栈跟踪,stack traces

Xdebug 在显示 notice, warning, error,都会显示堆栈跟踪。堆栈跟踪显示的信息,以及它们的显示方式,可以配置。

8 分析器,profiler

Xdebug 内置了分析器帮助我们在脚本中查找瓶颈,并使用外部工具(如KCacheGreend或WinCacheGreend)可以可视化这些瓶颈。

使用方法:

  1. 修改配置 xdebug.profiler_enable = On ,将profiler机制开启。开启后,执行PHP程序时会生成信息文件,位于 xdebug.profiler_output_dir 指向的目录。文件名通常是:cachegrind.out.5544 后面的数字是进程ID。
  2. 使用分析工具(如KCacheGreend或WinCacheGreend),分析信息文件得到结果。

分析结果如图所示,使用的工具QCacheGrind:

v2-f4f33ad6ed3b057413038d59aec1edd9_b.jpg

9 Code Coverage Analysis

用于 PHPUnit 测试!

10 浏览器控制调试

调试也可以由浏览器发起。需要在浏览器安装 Xdebug Helper 插件。操作过程为:

  1. 在浏览器的扩展程序中搜索 xdebug helper,安装到浏览器,成功后会在地址栏的右侧看到xdebug小虫子的图标。(自行解决)
  2. 配置插件。主要是选择与插件交互的 IDE,本例中使用PHPStorm。在扩展程序处配置。
  3. 编辑器(phpStorm),启动监听调试请求,就是编辑器小电话的图标。
  4. 浏览器请求PHP程序,若需要调试,通过插件通知编辑器。

浏览器配置如图所示:

v2-203ff5568bb83e2ddeb85a7af14019fb_b.jpg

配置完毕,在IDE上完成调试。

原理,调试还是由IDE完成,浏览器插件的目的就是通知IDE启动调试,通知的手段就是增加了请求参数,准确的说是cookie,XDEBUG_SESSION=PHPSTORM。除此之外请求参数?XDEBUG_SESSION_START=PHPSTORM也可以用来告知IDE。

关于

原文出自:小韩说PHP

微信关注:小韩说课

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值