zoukankan      html  css  js  c++  java
  • 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

      

      后:

      并在当前调试的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:

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

      当客户端和Xdebug建立DBGP(phpstorm中配置debug时需要在file->settings->Languages & Frameworks->PHP->Debug->DBGp Proxy

      

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

      如果我们想要终止远程调试,客户端同样会在当前调试的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

  • 相关阅读:
    open stack总结
    Nginx操作命令
    Nginx 配置详解
    Linux 常用命令-- top
    CEPH 使用SSD日志盘+SATA数据盘, 随OSD数目递增对性能影响的递增测试
    MyCat水平分库
    MyCat垂直分库
    MyCat基本知识
    utf8mb4复杂昵称问题
    Power安装linux-BIG ENDIAN mysql编译安装
  • 原文地址:https://www.cnblogs.com/orlion/p/6052802.html
Copyright © 2011-2022 走看看