博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
xdebug调试的原理
阅读量:4913 次
发布时间:2019-06-11

本文共 959 字,大约阅读时间需要 3 分钟。

转自

https://segmentfault.com/a/1190000002528341

使用PhpStorm+xdebug单步调试程序可以快速帮助自己熟悉项目代码!

运行原理

在实际使用前,我们来简单了解xdebug远程调试的原理,这样当xdebug不听话的时候,我们也知道从哪里收拾它。详细文档参见。

xdebug远程调试分为两部分:调试客户端和xdebug服务端。前者就是运行我们代码调试器的地方,我这里是IDEA,后者是xdebug运行的地方。当我们尝试使用xdebug进行调试时,客户端会监听一个端口,等待xdebug来连接,一旦连接成功,双方就开始通信,进行代码调试。

图一,

图一动态展示了xdebug运行的原理,左边是调试客户端,比如IDEAeclipse之类的IDE,右边是xdebug,运行按照如下步骤进行:

  1. IDE监听一个调试端口,默认是9000,可以自行配置。

  2. 用户访问右边php环境的server,我们这里使用浏览器访问,一般IDE会自动帮我们在正常的url后面增加XDEBUG_SESSION_START=name的参数。这个参数是用来通知xdebug主动连接IDE9000端口进行调试的,没有这个参数,xdebug不会去主动连接IDE,调试也就不会触发。

  3. xdebug主动去连接IDE9000端口, 连接成功后,调试开始。

细心的同学可能会问,xdebug是如何知道IDE监听9000端口的呢?好问题,答案就在配置文件里面。xdebug有两个配置:remote_hostremote_port,分别代表IDE的ip地址和监听端口。由此可见,IDExdebug必须协商好监听端口。

另一个问题又来了,端口好办,但是如果我的ip会变化,那我换一个ip,岂不是要修改下xdebug.remote_host配置吗?好麻烦!!!不知道ip没关系,xdebug可以自己知道,只要设置xdebug.remote_connect_back为1就可以了,其运行原理见图二,实现很简单,xdebug可以从http请求的头部获取ip地址,之后就用该ip地址作为remote_host来连接。

转载于:https://www.cnblogs.com/dongruiha/p/6811276.html

你可能感兴趣的文章
Workpress搭建经验 (ubuntu16.04+nginx+mysql+php7)
查看>>
Java List详解
查看>>
选择排序SelectSort
查看>>
一个案例深入Python中的__new__和__init__
查看>>
链接,光标,DHTML,缩放
查看>>
Flask博客类登录注册验证模块代码(十四)
查看>>
LFS、BLFS、ALFS、HLFS的区别
查看>>
Java的MD5加密和解密
查看>>
Unity3D接入移动MM支付SDK(强联网)的问题
查看>>
Accepting PayPal in games(完整的Paypal在Unity的支付)
查看>>
css
查看>>
Android无线测试之—UiAutomator UiDevice API介绍五
查看>>
Ruby中的include
查看>>
shell脚本报错:-bash: xxx: /bin/bash^M: bad interpreter: No such file or directory
查看>>
SQLServer创建用户登录
查看>>
Python基础---容器列表List
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
基础SQL汇总
查看>>
2>/dev/null和>/dev/null 2>&1和2>&1>/dev/null
查看>>
MSMQ的简单使用
查看>>