IntelliJ IDEA:通過Xdebug代理進行多用戶調(diào)試

2019-03-28 15:53 更新

通過Xdebug代理進行多用戶調(diào)試

此功能僅在Ultimate版本中受支持。
以下內(nèi)容僅在安裝并啟用PHP插件時有效!

在本節(jié)內(nèi)容中介紹了xdebug.remote_host值。IntelliJ IDEA接受此連接,并可以通過它與Xdebug通信。Xdebug僅支持連接到單個IP地址,并且由于安全原因,不會自動連接回運行瀏覽器的IP地址。為了在多用戶環(huán)境中調(diào)試PHP應(yīng)用程序,Xdebug提供了一個所謂的DBGp代理。

使用代理時,PHP Xdebug擴展不再直接連接到IntelliJ IDEA,而是連接到DBGp代理服務(wù)器。然后,團隊中的所有開發(fā)人員都會連接到該代理。每個開發(fā)人員都有一個單獨的調(diào)試會話在該代理上運行,這使得可以在同一服務(wù)器上對同一代碼進行多用戶調(diào)試。

ps xdebug架構(gòu)代理

通過Xdebug代理(DBGp)服務(wù)器配置多用戶調(diào)試

要通過Xdebug代理(DBGp)服務(wù)器配置多用戶調(diào)試,請執(zhí)行以下常規(guī)步驟:

  • 下載并安裝DBGp代理
  • 確保在Web服務(wù)器上安裝并配置了Xdebug
  • 從IntelliJ IDEA配置對DBGp代理服務(wù)器的訪問
  • 在瀏覽器中啟動調(diào)試會話

下載并安裝DBGp代理

為了能夠啟動調(diào)試會話,您需要在服務(wù)器上運行DBGp代理,Web服務(wù)器本身以及所有開發(fā)人員計算機都可以訪問該代理。我們可以在Web服務(wù)器上,同一網(wǎng)絡(luò)中的計算機上或通過SSH隧道訪問的計算機上安裝代理。

  1. 在Komodo下載頁面上,您可以找到特定于DBGp代理平臺的Python二進制文件。下載所需的包并運行 pydbgpproxy 或 pydbgpproxy.exe文件。

  2. 在Web服務(wù)器上或在可以與Web服務(wù)器和所有開發(fā)人員計算機進行通信的計算機上啟動DBGp代理。DBGp代理可執(zhí)行文件接受兩個參數(shù):-d-i。

    參數(shù)定義了從Web服務(wù)器監(jiān)聽調(diào)試器連接的IP地址和端口,以及監(jiān)聽開發(fā)人員的IP地址和端口。

    例如,監(jiān)聽環(huán)回地址(127.0.0.1 )和端口9001上的調(diào)試器連接,并監(jiān)計算機IP地址和端口9000上的開發(fā)人員。

    pydbgpproxy -d 127.0.0.1:9001 -i 192.168.99.1:9000

    DBGp代理將在啟動時確認這些設(shè)置:

    ps pdgp正在運行

確保在Web服務(wù)器上安裝并配置了Xdebug

  1. 在編輯器中打開活動的php.ini文件:

    1. 在“設(shè)置/首選項”對話框(Ctrl+Alt+S)中,單擊“語言和框架”下的“PHP”。

    2. 在打開的PHP頁面上,單擊“CLI解釋器”字段旁邊的browseButton。

    3. 在打開的“CLI解釋器”對話框中,“配置文件”只讀字段顯示活動php.ini文件的路徑。單擊“在編輯器中打開”。

  2. 確保至少指定了以下設(shè)置:

    [xdebug]
    zend_extension=xdebug_module_goes_here
    xdebug.remote_enable=1
    xdebug.remote_host=dbgp_proxy_hostname_or_ip
    xdebug.remote_port=9001

有關(guān)配置Xdebug的詳細信息,請參閱配置Xdebug

從IntelliJ IDEA配置對DBGp代理服務(wù)器的訪問

  1. 在主菜單中,選擇:工具|Xdebug代理|注冊IDE。

  2. 在打開的“Xdebug代理”對話框中,指定IDE密鑰值(這應(yīng)該是每個開發(fā)人員的唯一值,因為它標(biāo)識調(diào)試會話),Xdebug代理服務(wù)器的主機和端口。

    ps pdgp寄存器ide
  3. 單擊“確定”以連接到指定的代理服務(wù)器。服務(wù)器注冊憑據(jù),并確認連接。

    ps pdgp寄存器ide連接

    IntelliJ IDEA也會通知成功連接。

    ps pdgp寄存器ide成功
  4. 要更新現(xiàn)有憑據(jù),請在主菜單中選擇:工具|Xdebug代理|配置。在打開的“Xdebug代理”對話框中,編輯IDE密鑰,主機和端口設(shè)置。

    要放棄當(dāng)前憑據(jù),請在主菜單中選擇:工具|Xdebug代理|取消IDE注冊。

在瀏覽器中啟動調(diào)試會話

  1. 確保您使用的瀏覽器調(diào)試擴展設(shè)置為已注冊的IDE密鑰:

    ps pdgp ide鍵
  2. 在IntelliJ IDEA中,通過單擊工具欄上的php圖標(biāo)調(diào)試聽或者在主菜單上選擇:運行|為PHP調(diào)試連接啟用監(jiān)聽,來啟用監(jiān)聽傳入調(diào)試連接。這將確保IntelliJ IDEA在啟動調(diào)試會話時作出反應(yīng)并自動打開調(diào)試工具窗口。在啟動腳本之前,確保設(shè)置了一個斷點或者在“設(shè)置/首選項”對話框(Ctrl+Alt+S)的“調(diào)試”頁面啟用了PHP腳本選項的第一行的“中斷”。

    通過在瀏覽器中刷新頁面來啟動調(diào)試會話。

    ps pdgp調(diào)試開始了

故障排除

遠程文件路徑未映射到項目中的任何文件路徑

在某些情況下,調(diào)試器可以連接,但是我們會收到錯誤消息,指出遠程和項目文件之間沒有定義映射。這意味著IntelliJ IDEA無法確定哪個本地文件對應(yīng)于正在調(diào)試的文件。

ps調(diào)試沒有映射

我們可以通過單擊“單擊以設(shè)置路徑映射”并提供必要的路徑映射來解決此問題。

此外,我們可以使用配置與Web服務(wù)器同步中概述的技術(shù)配置這些映射。

無法建立連接,因為目標(biāo)計算機主動拒絕它

  • 確保已向DBGp代理注冊了IntelliJ IDEA ,并且它正在監(jiān)聽傳入的調(diào)試器連接 。
  • 確保在IntelliJ IDEA和調(diào)試器書簽或瀏覽器擴展中設(shè)置了正確的IDE密鑰。
  • 是否存在阻止連接到DBGp代理的防火墻?如果是這樣,請確保PHP Xdebug擴展可以連接到它,以及開發(fā)人員計算機。您可以使用http://canyouseeme.org或類似的服務(wù)來檢查打開的入站端口。
  • 是否有防火墻阻止與IDE的連接?確保IntelliJ IDEA可以從DBGp代理計算機連接到。您可以使用http://canyouseeme.org或類似的服務(wù)來檢查打開的入站端口。
  • DBGp代理應(yīng)用程序綁定到錯誤的IP地址。使用0.0.0.0作為地址運行它,以便它綁定到DBGp代理服務(wù)器上的任何IP地址。例如,運行:pydbgpproxy -i 0.0.0.0:9001 -d 0.0.0.0:9000。

在 Intelij IDEA 中使用安裝在同一臺計算機上的 Xdebug 和 DBGp 代理測試多用戶調(diào)試時,還需要驗證一些其他內(nèi)容:

  • IntelliJ IDEA綁定到錯誤的IP地址。當(dāng)DBGp代理在同時運行IntelliJ IDEA的本地計算機上運行時,IDE可能使用了錯誤的網(wǎng)絡(luò)子網(wǎng)。要解決此問題,請在主菜單上選擇:工具|DBGp代理|配置...,并將DBGp代理服務(wù)器的IP地址設(shè)置為0.0.0.0。然后,嘗試使用DBGp代理重新注冊IntelliJ IDEA。
  • 存在端口沖突。在本地計算機上測試DBGp時,IntelliJ IDEA和DBGp都可能希望綁定到同一端口。要不是這種情況,可以通過配置DBGp以使用其他端口或者在“設(shè)置/首選項”對話框(Ctrl+Alt+S)的“語言和框架|PHP|調(diào)試”頁面上更改IntelliJ IDEA的Xdebug端口。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號