资讯专栏INFORMATION COLUMN

使用Xdebug进行远程调试

paulquei / 2230人阅读

摘要:为什么要用方便联调和客户端一起联调,是会影响其他人员是使用。关注数据变化正常情况下,我们在调试和开发时,更关注数据的变化。红色方形,表示中断当前程序调试。第三个图形示,強制进入当前函数內部的程序。

为什么要用?

方便联调:
和客户端一起联调,是die(); exit(); 会影响其他人员是使用。

关注数据变化:
正常情况下,我们在调试和开发时,更关注数据的变化。频繁断点、效率比较低。

简单:
之前的开发自己比较懒,一直没用,用起来发现很简单。

原理

运行xdebug需要客户端IDE(phpstorm)、远程服务器配合,首先是客户端配置好端口,发送debug请求,请求会通过浏览器或者IDE的http请求,携带特定的参数发送到服务端,服务端收到请求后,发现这是一个xdebug请求,则与IDE建立dpgp连接,当遇到断点时候,返回调试信息给IDE

服务器的IP是10.0.1.2,端口80上有HTTP

IDE位于未知IP上,因此xdebug.remote_connect_back设置为1

IDE侦听端口9000,因此xdebug.remote_port设置为9000

发出HTTP请求,Xdebug从HTTP头中检测IP地址

Xdebug连接到端口9000上检测到的IP(10.0.1.42)

调试运行,提供HTTP响应

流程

1. 安装xdebug扩展

https://xdebug.org/download.php

2. 远程环境配置
zend_extension=xdebug.so
xdebug.idekey=PHPSTORM
xdebug.remote_connect_back = 1
//如果开启此,将忽略下面的 xdebug.remote_host 的参数

xdebug.remote_host=192.168.x.x
//注意这里是,客户端的ip<即IDE的机器的ip,不是你的web server>

xdebug.remote_enable=on
xdebug.remote_port = 9001
//注意这里是,客户端的端口<即IDE的机器的ip,不是你的web server>

xdebug.remote_handler = dbgp
xdebug.auto_trace = 1
xdebug.remote_log = /tmp/xdebug.log
3. 配置deployment

4. Phpstorm Debug配置

5. 开启phpstorm 数据监听

6. 设置 debug session

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

6.1) 安装工具
https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc

6.2) 点击图标设置

6.3) 已经设置了cookie, Key 是 XDEBUG_SESSION, 值是 PHPSTORM

7. 运行页面

其他调试方式

上面的模式有个缺点,插件是针对于一个标签页
快捷键:
Mac: Ctrl+Shift+X Windows:Alt+Shift+X

内部模式 1. 设置 web 访问的服务器

2. 配置调试页面

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

3. 运行测试页面

自动生成:XDEBUG_SESSION_START
http://example.com/?XDEBUG_SESSION_START=13608

Fiddler工具调试
if (oSession.host == "xxxx")
{
    var sCookie = oSession.oRequest["Cookie"] + ";XDEBUG_SESSION=PHPSTORM;";
    oSession.oRequest.headers.Add("Cookie", sCookie);        
}
命令行
export XDEBUG_CONFIG="idekey=PHPSTORM"
php myscript.php
多人开发模式

https://derickrethans.nl/debugging-with-multiple-users.html
插件下载地址:http://code.activestate.com/komodo/remotedebugging/

其他 1. 查看兼容性

第一次运行的时候可以通过 phpstorm 自带的工具来检查配置的兼容性.
Run > Web Server Debug Validation
校验代码
:https://gist.github.com/han8g...

2. debug 帮助面板说明

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

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

参考文章

https://segmentfault.com/a/1190000011387666

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

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

相关文章

  • IDEA集成xdebug远程调试功能

    摘要:远程调试分为两部分调试客户端和服务端。主动去连接的端口,连接成功后,调试开始。当然,单步调试的另一个好处是可以让初学者快速掌握项目的架构和执行流程。 博客原文链接 在使用php调试代码的时候,我通常都是使用简单暴力的echo之类的输出调试。这种调试方法的效率与个人能力正相关,你加一个echo多数是为了验证自己的一个推测,那么你对代码越熟悉,你推测的就会越准确,bug解决的就越快,相反...

    haobowd 评论0 收藏0
  • 一文掌握PHP Xdebug 本地与远程调试

    摘要:原文链接一文掌握本地与远程调试很久没写了同样很很久没有用了,近期有个简单的场景要用到,简单记录一下关键步骤。配置与本地调试的配置不一样的地方就是和,其他地方大同小异。 原文链接:一文掌握PHP Xdebug 本地与远程调试 很久没写PHP了、同样很很久没有用XDebug了,近期有个简单的场景要用到,简单记录一下关键步骤。 本地调试 本地环境: $ php -v PHP 7.3.4 (c...

    MrZONT 评论0 收藏0
  • 在Docker中使用Xdebug

    摘要:说明开发和调试环境为本地中的,环境为本地下的。再次在容器中抓取端口数据包连接的源地址已经正确再次使用的断点调试时,控制台如下所以,使用进行远程调试时,需要选择合适的调试模式,在下建议使用远程模式。 首发于 樊浩柏科学院 我们经常会使用 PhpStorm 结合 Xdebug 进行代码断点调试,这样能追踪程序执行流程,方便调试代码和发现潜在问题。博主将开发环境迁入 Docker 后,Xd...

    pakolagij 评论0 收藏0
  • 在Docker中使用Xdebug

    摘要:说明开发和调试环境为本地中的,环境为本地下的。再次在容器中抓取端口数据包连接的源地址已经正确再次使用的断点调试时,控制台如下所以,使用进行远程调试时,需要选择合适的调试模式,在下建议使用远程模式。 首发于 樊浩柏科学院 我们经常会使用 PhpStorm 结合 Xdebug 进行代码断点调试,这样能追踪程序执行流程,方便调试代码和发现潜在问题。博主将开发环境迁入 Docker 后,Xd...

    jerry 评论0 收藏0
  • XDEBUG 从入门到精通

    摘要:默认关闭如果该设置为,那么将禁用关闭操作符,以便不再隐藏通知警告和错误。将写入垃圾收集统计信息输出的目录,确保将运行的用户具有对该目录的写入权限。此设置确定用于将垃圾回收统计信息转储到的文件的名称。 showImg(https://segmentfault.com/img/bVbgEC5?w=480&h=274); 前言 Xdebug是PHP的扩展,用于协助调试和开发。 它包含一个用...

    leejan97 评论0 收藏0

发表评论

0条评论

paulquei

|高级讲师

TA的文章

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