文档章节

Xdebug工作原理

林泳坛
 林泳坛
发布于 2015/01/24 21:07
字数 566
阅读 2051
收藏 3

对于PHP开发,初来咋到,开发环境的搭建和理解感觉是最操逼的一件事了。不像JAVA,打开一个Eclipse就可以开搞,Php的Debug都要几个插件来配合工作。这些都是死的,好说。但是对于Xdebug的工作原理我一直是耿耿于怀,后来看了一篇神文Xdebug断点调试的工作原理详解

读后,我的总结是,

Xdebug的工作原理可以总结为下面几个步骤,

1)IDE(比如PhpStorm,下文所述的客户端)中已经集成了一个遵循BGDp的Xdebug插件。当要debug的时候,点击一些IDE的某个按钮,启动这个插件。该插件会启动一个9000的端口监听远程服务器发过来的debug信息。

2)浏览器向Httpd服务器发送一个带有XDEBUG_SESSION_START参数的请求,Httpd收到这个请求之后交给后端的PHP进行处理(下面就忽略Httpd,直接把Php叫做Server)。

3)Php看到这个请求是带了XDEBUG_SESSION_START 参数,就告诉Xdebug,“嘿,我要debug喔,你准备一下”。这时,Xdebug这时会向来源ip客户端的9000端口(即客户端,也即是IDE)发送一个debug请求,然后客户端的9000端口响应这个请求,那么debug就开始了。

4)Php知道Xdebug已经准备好了,那么就开始开始一行一行的执行代码,但是每执行一行都会让Xdebug过滤一下。

5)Xdebug开始过滤代码,Xdebug在过滤每一行代码的时候,都会暂停代码的执行,然后向客户端的9000端口发送该行代码的执行情况,等待客户端的决策(是一句代码还是下一个断点待)。

6)相应,客户端(IDE)收到Xdebug发送过来的执行情况,就可以把这些信息展示给开发者看了,包括一些变量的值等。同时向Xdebug发送下一步应该什么。


另外PHP中配置Xdebug插件的配置如下:

zend_extension="/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so"

xdebug.remote_enable=1

xdebug.remote_host=localhost

xdebug.remote_port=9000

xdebug.remote_autostart=1

xdebug.auto_trace=1

xdebug.collect_vars=1



不当之处,还请各位指点,QQ1013054837,一切在于交流。



© 著作权归作者所有

共有 人打赏支持
林泳坛
粉丝 3
博文 18
码字总数 13321
作品 0
广州
程序员
私信 提问
加载中

评论(2)

OSC首席键客
OSC首席键客

引用来自“loodeer”的评论

总结的不错79,可惜神文链接不存在了。
在啊!
loodeer
loodeer
总结的不错79,可惜神文链接不存在了。
使用phpstorm和xdebug实现远程调试

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

thinkyoung
2015/09/08
0
0
Xdebug—php调试工具

参考文章 http://koda.iteye.com/blog/537421 百度百科:http://baike.baidu.com/view/1823486.htm 中文手册 http://www.phptogether.com/xdebugdoc/ XDebug是一个开放源代码的PHP程序调试器......

麦田兔子
2013/08/12
0
0
PHP调试工具Xdebug安装配置

说道PHP代码调试,对于有经验的PHPer,通过echo、printr、vardump函数,或PHP开发工具zend studio、 editplus可解决大部分问题,但是对于PHP入门学习的童鞋来说有一定的难度,而且仅仅通过上...

liushen829475
2013/10/24
0
0
php及xdebug使用小结

php下搭配使用xdebug是十分好的组合,用于php的调试工作,下面分别介绍之: 1 WINDOWS下的安装 下载站点http://www.xdebug.org/ 要确定使用一个跟你的PHP配合的版本才行,比如xdebug中的5。2...

jackjie2010
2012/06/20
0
0
PHP调试工具Xdebug安装配置教程

说道PHP代码调试,对于有经验的PHPer,通过echo、printr、vardump函数,或PHP开发工具zend studio、editplus可解决大部分问题,但是对于PHP入门学习的童鞋来说有一定的难度,而且仅仅通过上述...

雍雍_yoyo
2013/07/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 文档主题合并问答

在 Confluence 官方 前期发布的消息 中,文档主题在 Confluence 6.0 及其后续版本中已经不可用。我们知道你可能对这个有很多好好奇的问题,因此我们在这里设置了一个问答用于帮助你将这个主题...

honeymose
13分钟前
0
0
传播正能量——《海南英才》阅读的读后感2200字

传播正能量——《海南英才》阅读的读后感2200字: 新华社记者12月8日从公安部获悉,针对自媒体“网络水军”敲诈勒索等违法犯罪活动突出问题,今年以来,公安部组织各地公安机关依法深入开展侦...

原创小博客
21分钟前
2
0
java框架学习日志-2

上篇文章(java框架学习日志-1)虽然跟着写了例子,也理解为什么这么写,但是有个疑问,为什么叫控制反转?控制的是什么?反转又是什么? 控制其实就是控制对象的创建。 反转与正转对应,正转...

白话
今天
5
0
Integer使用双等号比较会发生什么

话不多说,根据以下程序运行,打印的结果为什么不同? Integer a = 100;Integer b = 100;System.out.println(a == b);//print : trueInteger a = 200;Integer b = 200;System.out.pr...

兜兜毛毛
昨天
10
0
CockroachDB

百度云上的CockroachDB 云数据库 帮助文档 > 产品文档 > CockroachDB 云数据库 > 产品描述 开源NewSQL – CockroachDB在百度内部的应用与实践 嘉宾演讲视频及PPT回顾:http://suo.im/5bnORh ...

miaojiangmin
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部