程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> xdebug斷點調試原理,xdebug斷點調試

xdebug斷點調試原理,xdebug斷點調試

編輯:關於PHP編程

xdebug斷點調試原理,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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved