xdebug断点调试原理

  通过Xdebug进行长距离调试时,PHPSTORM等IDE会监听Xdebug设置的调剂ip和端口(php.ini中安排)

[xdebug]
; Xdebug
zend_extension=php_xdebug.dll
xdebug.remote_enable = On
xdebug.remote_host = 127.0.0.1
xdebug.remote_port = 9000
xdebug.idekey="PHPSTORM"

   下面就张截图是phpstorm开启listening for php debug connections

  图片 1

  后:

图片 2

  并以当前调试的URL后面长了XDEBUG_SESSION_START的呼吁参数,参数值为IDE标识,这个标识相当给用户称,用以区别不同的IDE(chrome或者firefox中之xdebug扩展(firefox中自己所以的是The
easiest Xdebug)
是经过设置cookie的办法),然后往PHP服务器发送请求,例如:http://www.example.com?XDEBUG\_SESSION\_START=ECLIPSE\_DBGP&KEY=13986635740313。

比方由此xdebug firefox插件则足以看出请时会带动一个cookie:

图片 3

[默认配置下,Xdebug只能够为一个客户端提供远程调试服务,如果想要呢多独客户端提供远程调试服务,则需要设置xdebug.remote_connect_back = 1。]

  当客户端和Xdebug建立DBGP(phpstorm中布局debug时索要以file->settings->Languages
& Frameworks->PHP->Debug->DBGp Proxy

  图片 4

)连接后,客户端就得吧咱提供远程调试服务了,远程调试会话开启流程如下图所示:

图片 5

  如果我们怀念只要停远程调试,客户端同样会在当前调试的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/post/117.html

相关文章