资讯专栏INFORMATION COLUMN

使用 Xdebug 在 PHPStorm 中调试 PHP 程序(框架/原生均适用)

cloud / 1832人阅读

摘要:红色方形,表示中断当前程序调试。第三个图形示,強制进入当前函数內部的程序。框架说明加载的文件列表可以观察到所有全局变量当前局部变量的数值可以新增变量,观察变量随着程序执行的变化。参考文章使用与调试一

序言

Xdebug 作为 PHP 调试工具,提供了丰富的调试函数和配置,可以直观的看到 PHP 源代码的步进和性能数据,以便优化PHP代码。

使用 phpstorm + xdebug 来调试 php 程序是借助强大的IDE监听功能, 更方便的调试程序. 提高我们的编码效率, 固然 var_dump, print_r 等函数也能提供相应的功能, 但是自动化的工具更能够事半功倍. 下面我根据自己的使用介绍下如何进行调试和配置.

, 一种方式是用外部设置的 session, 另外一种是在 phpstorm 中配置页面入口然后使用内置的监听来访问, 原理相同, 下面我们从原理开始讲解

调试原理

配置调试环境 1) 配置 xdebug

这里使用了最小化配置, 对于 profile 等功能没有配置

[xdebug]
zend_extension="/usr/local/opt/php70-xdebug/xdebug.so"
xdebug.remote_enable=1          # 启用远程调试
xdebug.remote_connect_back=1    # 忽略 remote_host 配置, 不关注主机配置, 开发者使用最舒服
xdebug.remote_port=9050         # 监听端口

注意 这里监听端口默认是 9000 , 和 php 默认监听重复, 注意尽量不用使用 9000, 以免出现不生效的情况.

2) 设置 phpstorm 配置并开启监听

这里是让 phpstorm 通过监听端口的方式获取到xdebug 断点传送过来的数据

2.1) 配置端口

我们这里监听的是 9500 端口, 和 xdebug 配置监听数据端口一致

2.2) 开启phpstorm 数据监听

切换 “开始监听PHP调试连接” 按钮。

3) 在 phpstorm 中设置断点

点击行号右侧空白, 设置断点

4) 设置 debug session

debug session 的工具的目的是设置一个cookie, 让每次发送数据的时候都会携带这个 cookie, 从而识别监听.

4.1) 安装工具

安装 chrome 扩展 Xdebug helper

4.2) 点击 图标设置session

已经设置了cookie, Key 是 XDEBUG_SESSION, 值是 PHPSTORM, 我认为这里的值无关紧要, 对于 phpstorm 来说, 是能够监控到的.

5) 运行页面

这里我们在断点位置可以看到输出的内容项目

另一种方式: 内部调用

这里的另外一种方式的服务器配置方式和流程完全一致, 就是第四步和第五步有所不同, 实现的原理是在phpstorm中设置运行的服务器, 然后通过 debug 模式自动设置 XDEBUG_SESSION, 并且自动开启监听.

内部调用: 4) 设置 debug session 4.1) 设置 web 访问的服务器

例如我这里的本地域名是 l.dailian.sour-lemon.com, 我们需要配置一个本地服务器来打开这个页面, 我们首先配置一台服务器.

注意 这里的配置的域名是你本地已经配置好开发环境的域名, 端口号是 本地开发所使用的端口, 我这里是 l.dailian.sour-lemon.com 和 80

4.2) 配置调试页面

我们这里创建的调试页面的类型是 PHP Web Application, 服务器选择的是刚才已经建立好的服务器

内部调用: 5) 运行测试页面

这样运行的情况下上面的 2.2) 开启phpstorm 数据监听 步骤可以忽略掉, 这里不需要开启这个监听.

5.1) 开始 debug

点击 debug 按钮, 这里会自动打开一个页面并且传递一个唯一的ID(可能是进程 ID)作为 debug 值

打开的url地址是: http://l.dailian.sour-lemon.com/?XDEBUG_SESSION_START=13608, 这里的数值是会变动的.

5.2) 查看 debug 面板

打开 debug 面板, 会看到相对应的监听 idekey, 这里和上一步设置的key是一致的, 同样也和 cookie 中的设置的 XDEBUG_SESSION 值一致

其他帮助 1. 查看兼容性

第一次运行的时候可以通过 phpstorm 自带的工具来检查配置的兼容性.

Run > Web Server Debug Validation

2. debug 帮助面板说明

左侧
绿色三角形 : Resume Program,表示將继续执行,直到下一个中断点停止。
红色方形 : Stop,表示中断当前程序调试。

上方
第一个图形示 : Step Over,跳过当前函数。
第二个图形示 : Step Into,进入当前函数內部的程序(相当于观察程序一步一步执行)。
第三个图形示 : Force Step Into,強制进入当前函数內部的程序。
第四个图形示 : Step Out,跳出当前函数內部的程式。
第五个图形示 : Run to Cursor,定位到当前光标。

框架说明
Frames : 加载的文件列表
Variables : 可以观察到所有全局变量、当前局部变量的数值
Watches : 可以新增变量,观察变量随着程序执行的变化。

参考文章

Zero-configuration Web Application Debugging with Xdebug and PhpStorm

使用 PHPStorm 与 Xdebug 调试 Laravel (一)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25934.html

相关文章

  • 使用 PHPStormXdebug 调试 Laravel (二)

    摘要:的方式不仅仅局限于框架,同样适用于与其他框架,也适用于原生的代码。学会使用这种方式之后,一般很少使用,,,等原生或框架辅助函数进行了。 环境 系统版本:OSX 10.11.4 PHP 版本:7.0.5 Xdebug 版本:2.4.0 Laravel 版本:5.1.31 PHPStorm 版本:10.0.4 根据上篇文章的配置,在工作时会发现,我们需要经常调整 PHP Web App...

    Ashin 评论0 收藏0
  • 简杰的php编程分享-1.2 xdebug的实际运用

    摘要:单击此按钮可暂停程序执行。单击此按钮,通过标准关闭脚本从外部终止当前进程。实际上,插入符号处的当前行有一个临时断点集,一旦程序执行暂停,就会删除它。心中始终十分抗拒,导致功能变更延期。 介绍 在 上一期 中我们已经把 xdebug 和 phpstorm 的关联配置设置好了,接下来我将会深入的介绍 debug 的运用。分为3点内容 快速找到错误的原因 辅助读懂比效复杂的代码 代码重构 ...

    ls0609 评论0 收藏0
  • PhpStorm连接docker容器内的php XDebug进行断点调试

    摘要:连接容器内的进行断点调试进行断点调试尽管不像其他语言那样方便,但是有些是有确实有其用处,比如调试循环内的数据异常时。 PhpStorm连接容器内的XDebug进行断点调试 php进行断点调试尽管不像其他语言那样方便,但是有些是有确实有其用处,比如调试循环内的数据异常时。在php于phpstorm都安装在同一环境下时,配置phpstorm的xdebug调试并不是多困难的事情,但是如果你使...

    XGBCCC 评论0 收藏0
  • PHPStorm + Xdebug 配置使用教程

    摘要:下载是一个开放源代码的程序调试器即一个工具,可以用来跟踪,调试和分析程序的运行状况。全部可用配置可参考官方的一个链接设置服务器配置完成后,需要对作一些设置,使其能够监听到浏览器的请求。 下载Xdebug Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况。 Xdebug官方网站:http://xdebug.org/ 配置...

    gself 评论0 收藏0
  • 使用xdebug+phpstorm+(chrome|postman) 调试php

    摘要:基本信息安装下载扩展配置配置新建注如果不使用路径映射,将只能调试框架入口文件配置插件地址配置测试开启编辑器监听浏览器访问项目打开,可以看到控制台已经打开断点调到下一个断点,可以看到效果了使用调试安装插件使用请求进入断 1.基本信息: window 7 php:7.1.3 phpstorm:2017.1 xdebug:2.5.1 postman postman interceptor c...

    whjin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<