文档章节

Xdebug工作原理

林泳坛
 林泳坛
发布于 2015/01/24 21:07
字数 566
阅读 1992
收藏 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代码调试,对于有经验的PHPer,通过echo、printr、vardump函数,或PHP开发工具zend studio、editplus可解决大部分问题,但是对于PHP入门学习的童鞋来说有一定的难度,而且仅仅通过上述...

雍雍_yoyo
2013/07/01
0
0
php及xdebug使用小结

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

jackjie2010
2012/06/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

腾讯与Github的魔幻会面背后的故事…

10月22日,腾讯开源管理办公室有幸邀请到Github新晋CEO Nat Friedman,前来鹅厂参观交流。目前腾讯已经有近70个项目在Github上开源,共获得17w stars,世界排名11位。Github是腾讯开源的主阵...

腾讯开源
25分钟前
1
0
单例模式

单例模式(Singleton pattern)属于创建型设计模式。 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对...

NinjaFrog
30分钟前
1
0
TypeScript基础入门之装饰器(三)

转载 TypeScript基础入门之装饰器(三) 继续上篇文章[TypeScript基础入门之装饰器(二)] 访问器装饰器 Accessor Decorator在访问器声明之前声明。 访问器装饰器应用于访问器的属性描述符,可用...

durban
48分钟前
2
0
spring5调研学习(转载)

Spring框架的新功能 这一章主要提供Spring框架新的功能和变更。 升级到新版本的框架可以参考。Spring git。 内容列表 Spring 5.x框架新的功能 Spring 4.x框架新的功能 Spring 3.x框架新的功能...

小海bug
58分钟前
2
0
为何Spring框架能这么流行?

想要学习更多关于Spring框架在Java开发者中如此流行?看这篇文章可以学到更多! Spring框架特性 Spring是用于应用开发中的一款强大,轻量级框架。更广泛地说,你可以认为Spring框架是一个定义...

java知识分子
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部