2017-04-12 109 views
4

我一直在Mac上使用XDEbug和PHP Version 7.0。*進行最近6個月的遠程調試。Docker和XDebug不能讀斷點VSCode

我正在運行一個docker的舊版本的docker,它使用VirtualBox作爲VM,所有的工作都很好。

我最近更新了docker到版本17.03.1並且只有xDebug的問題。我已經聯繫vscode-php-debug的創建者,通過他的存儲庫上的一個問題,然後他指出我要用xdebug和docker來解決這個問題。

我的問題是這樣的:

XDebug的運行和我的容器上工作時,Xdebug的日誌顯示,它連接到我的IDE,但它只是關閉連接,如果沒有斷點,當我有斷點設置在VSCode中。

我貼在vscode-PHP調試問題,可以發現here

其中有我的Xdebug日誌和VSCode調試日誌的副本......這表明,在建立連接,但沒有斷點被擊中。

我已經閱讀了幾個博客,碼頭工人現在需要爲連接到xdebug創建的loopback ip工作,我也試過並失敗了。

我發現很難在沒有調試器的情況下使用調試器很長時間才能進行調試。

我嘗試了許多配置,重新安裝,重新啓動,重建圖像/容器,甚至嘗試了freenode上的docker和xdebug irc頻道,沒有任何成功。

+0

任何機會,你在Mac上?因爲Docker for mac(社區版)和xdebug存在相當多的問題。我通過每次重啓都執行一個命令來實現它。 – Bram

+0

是的,我在mac上 – joshualawson

回答

3

由於您在mac上使用docker,因此我發佈瞭解決方案的工作方式。大部分學分去this post on the docker forum

假設您的xdebug安裝正確,這是我在php.ini中的配置。

[xdebug] 
xdebug.remote_host=10.254.254.254 
xdebug.remote_autostart=1 
xdebug.idekey = PHPSTORM 
xdebug.default_enable = 0 
xdebug.remote_enable = 1 
xdebug.remote_connect_back = 0 
xdebug.profiler_enable = 1 

您可以通過在終端中執行此命令來測試您的配置。 sudo ifconfig en0 alias 10.254.254.254 255.255.255.0

如果工作正常,您可以將其轉換爲plist文件並將其放置在以下位置。 /Library/LaunchDaemons/com.docker.xdebugFix.plist。下面你會發現我的版本的plist文件。

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>Label</key> 
    <string>com.docker.xdebugFix</string> 
    <key>ProgramArguments</key> 
    <array> 
     <string>ifconfig</string> 
     <string>en0</string> 
     <string>alias</string> 
     <string>10.254.254.254</string> 
     <string>255.255.255.0</string> 
    </array> 
    <key>RunAtLoad</key> 
    <true/> 
</dict> 
</plist> 

注意:plist將只能在重新啓動Mac後才起作用。

之後,我建立了我的PHP風暴調試服務器這樣的: php storm config 1

php storm config 2

之後,我的斷點在那裏工作,如果你使用的是Chrome,你還需要使用xdebug的擴展,但我很確定你知道這一點,因爲你過去使用它。

+0

這是我已經嘗試的過程...沒有succuess ...但我可能再給它一個今天再試一次 – joshualawson

+0

不幸的是,這仍然沒有工作......我已經嘗試過使用chrome的xdebug也... XDebug報告連接連接但沒有斷點,它不甚至打破開始,如果我在我的IDE設置或chromes xdebug擴展.... – joshualawson

+0

我發現這個問題,這是由於我的docker-compose.yml設置...與舊版本的運行在VirtualBox上的碼頭我不得不打開我的容器端口9000,以便xDebug可以使用隧道連接到我的主機...這與碼頭現在引起衝突... 因此,上述答案是正確的,但對任何人都有DID有端口9000在其容器上打開......不再需要打開/轉發 – joshualawson