使用Xdebug進行遠端除錯

storyflow發表於2021-11-18

為什麼要用?

  1. 方便聯調:
    和客戶端一起聯調,是die(); exit(); 會影響其他人員是使用。
  2. 關注資料變化:
    正常情況下,我們在除錯和開發時,更關注資料的變化。頻繁斷點、效率比較低。
  3. 簡單:
    之前的開發自己比較懶,一直沒用,用起來發現很簡單。

    原理

    執行xdebug需要客戶端IDE(phpstorm)、遠端伺服器配合,首先是客戶端配置好埠,傳送debug請求,請求會通過瀏覽器或者IDE的http請求,攜帶特定的引數傳送到服務端,服務端收到請求後,發現這是一個xdebug請求,則與IDE建立dpgp連線,當遇到斷點時候,返回撥試資訊給IDE

在這裡插入圖片描述

  • 伺服器的IP是10.0.1.2,埠80上有HTTP
  • IDE位於未知IP上,因此xdebug.remote_connect_back設定為1
  • IDE偵聽埠9000,因此xdebug.remote_port設定為9000
  • 發出HTTP請求,Xdebug從HTTP頭中檢測IP地址
  • Xdebug連線到埠9000上檢測到的IP(10.0.1.42)
  • 除錯執行,提供HTTP響應

流程

在這裡插入圖片描述

1. 安裝xdebug擴充套件

xdebug.org/download.php

2. 遠端環境配置

zend_extension=xdebug.so
xdebug.idekey=PHPSTORM
xdebug.remote_connect_back = 1
//如果開啟此,將忽略下面的 xdebug.remote_host 的引數

xdebug.remote_host=192.168.x.x
//注意這裡是,客戶端的ip<即IDE的機器的ip,不是你的web server>

xdebug.remote_enable=on
xdebug.remote_port = 9001
//注意這裡是,客戶端的埠<即IDE的機器的ip,不是你的web server>

xdebug.remote_handler = dbgp
xdebug.auto_trace = 1
xdebug.remote_log = /tmp/xdebug.log

3. 配置deployment

在這裡插入圖片描述

4. Phpstorm Debug配置

在這裡插入圖片描述

5. 開啟phpstorm 資料監聽

在這裡插入圖片描述

6. 設定 debug session

debug session 的工具的目的是設定一個cookie, 讓每次傳送資料的時候都會攜帶這個 cookie, 從而識別監聽.

6.1) 安裝工具
chrome.google.com/webstore/detail/...

6.2) 點選圖示設定

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-ZcbWs6w6-1579154178585)(cdn.nlark.com/yuque/0/2018/png/103... “”)]

6.3) 已經設定了cookie, Key 是 XDEBUG_SESSION, 值是 PHPSTORM,

在這裡插入圖片描述

7. 執行頁面

在這裡插入圖片描述

其他除錯方式

上面的模式有個缺點,外掛是針對於一個標籤頁
快捷鍵:
Mac: Ctrl+Shift+X Windows:Alt+Shift+X

內部模式

1. 設定 web 訪問的伺服器

在這裡插入圖片描述

2. 配置除錯頁面

我們這裡建立的除錯頁面的型別是 PHP Web Page, 伺服器選擇的是剛才已經建立好的伺服器

在這裡插入圖片描述

3. 執行測試頁面

在這裡插入圖片描述

自動生成:XDEBUG_SESSION_START
example.com/?XDEBUG_SESSION_START=1...

Fiddler工具除錯

if (oSession.host == "xxxx")
{
    var sCookie = oSession.oRequest["Cookie"] + ';XDEBUG_SESSION=PHPSTORM;';
    oSession.oRequest.headers.Add("Cookie", sCookie);        
}

命令列

export XDEBUG_CONFIG="idekey=PHPSTORM"
php myscript.php

多人開發模式

derickrethans.nl/debugging-with-mu...
外掛下載地址:code.activestate.com/komodo/remoted...

其他

1. 檢視相容性

第一次執行的時候可以通過 phpstorm 自帶的工具來檢查配置的相容性.
Run > Web Server Debug Validation
校驗程式碼
gist.github.com/han8gui/231ba75c89...

2. debug 幫助皮膚說明

在這裡插入圖片描述

左側
綠色三角形 : Resume Program,表示將繼續執行,直到下一個中斷點停止。
紅色方形 : Stop,表示中斷當前程式除錯。

上方
第一個圖形示 : Step Over,跳過當前函式。
第二個圖形示 : Step Into,進入當前函式內部的程式(相當於觀察程式一步一步執行)。
第三個圖形示 : Force Step Into,強制進入當前函式內部的程式。
第四個圖形示 : Step Out,跳出當前函式內部的程式。
第五個圖形示 : Run to Cursor,定位到當前游標。

參考文章

segmentfault.com/a/119000001138766...

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章