软件指南针:专注于软件传播与分享

Xdebug断点调试的工作原理详解

来源:原创 3148次浏览 0条评论
☞ 本文主要介绍软件Zend Studio的相关内容:Xdebug断点调试的工作原理详解

   其下列版本/分支可以参考本文:

  • 全部版本/分支

开启远程调试会话

使用Zend Studio或其他客户端(下面统称"客户端")通过Xdebug进行远程调试时,客户端就会监听Xdebug调试器(Zend Studio已内置)设置的调试端口(默认为9000),并在当前调试的URL后面加上了XDEBUG_SESSION_START的请求参数,参数值为客户端标识(相当于用户名,用以区别不同的客户端),然后向PHP服务器发送请求,例如:

http://localhost/index.php?XDEBUG_SESSION_START=ECLIPSE_DBGP&KEY=13986635740313

当PHP服务器的Xdebug模块检测到请求URL中带有XDEBUG_SESSION_START参数时,则将该请求的响应挂起,并自动进入调试模式。此时,Xdebug将会尝试以指定的协议(一般是DBGP)与Xdebug配置中指定的地址xdebug.remote_host:xdebug.remote_port建立连接。

如果没有特殊设置,xdebug.remote_host默认为localhostxdebug.remote_port默认为9000,默认的连接地址即是localhost:9000
默认配置下,Xdebug只能为一个客户端提供远程调试服务,如果想要为多个客户端提供远程调试服务,则需要设置xdebug.remote_connect_back = 1

当客户端和Xdebug建立DBGP连接后,客户端就可以为我们提供远程调试服务了,远程调试会话开启流程如下图所示:

Xdebug远程调试运行机制

停止远程调试

如果我们想要终止远程调试,客户端同样会在当前调试的URL后面加上XDEBUG_SESSION_STOPXDEBUG_SESSION_STOP_NO_EXEC(XDEBUG_SESSION_STOP_NO_EXEC表示脚本尚未执行)参数,然后向PHP服务器发送请求,链接例如:

http://localhost/index.php?XDEBUG_SESSION_STOP_NO_EXEC=ECLIPSE_DBGP&KEY=13986635740313

Xdebug模块检测到URL中的该参数时,则会终止掉与指定客户端的连接与会话。

作者:软件指南针(http://www.softown.cn),转载请保留出处!

用户评论

使用指南 故障排除 0 返回顶部