2015-06-11 61 views
2

我一直在嘗試幾個星期才讓我的PHPStorm通過Xdebug連接到遠程主機。最近我發現客戶端的主機阻塞了端口9000.我終於有了這個固定的,現在xdebug日誌顯示它連接到客戶端(當然是我)。Xdebug即使在記錄中斷時也不會停止,但表示它已連接到客戶端

但是,它不停止在任何斷點上。在PHPStorm中設置的斷點甚至不會顯示在日誌中。呼叫xdebug_break();至少會被記錄爲休息時間,但仍然不會停止。

基於其他問題,我在這裏已經確認了XDebug裝有zend_extention=/full/path/xdebug.so,而不是與extension=xdebug.so

我也嘗試從端口9000切換到端口9001,在結果沒有變化。

的日誌條目:

Log opened at 2015-06-09 14:41:10 //and many other dates and times 
I: Checking remote connect back address. 
I: Remote address found, connecting to MY.IP.HE.RE:9000. //similar message on port 9001 after trying that 
I: Connected to client. :-) 
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///chroot/home/company/remotehost.com/html/index.php" language="PHP" protocol_version="1.0" appid="2294" idekey="PHPSTORM"><engine version="2.2.2"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2013 by Derick Rethans]]></copyright></init> 

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="break" reason="ok"><xdebug:message filename="file:///chroot/home/company/remotehost.com/html/app/code/community/Zzyzzx/Stores/controllers/TestController.php" lineno="11"></xdebug:message></response> 

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response> 

Log closed at 2015-06-09 14:41:13 

它得到的文件,從具有3個斷點在線路編碼在IDE和一個設置11

什麼可能導致它失敗遵循斷點並讓我調試?

我在服務器設置中使用的路徑是/home/company/remotehost.com/html映射到我的項目根目錄,其中包含相同的文件。我明白這是從根開始的絕對路徑,如果我明白它是由日誌顯示從代碼中斷的確認。它是唯一具有路徑集的文件。我是否需要爲每個文件設置路徑?

我也嘗試刪除服務器,希望觸發對話框,但沒有觸發,我只是得到完全相同的日誌條目與新的時間/日期/ IP。

我剛剛發現,無論何時我試圖重新載入正在調試的頁面,在我的「運行」菜單中都有一個「恢復程序」的選項,它會調出我想要調試的文件列表。點擊該按鈕打開調試工具窗口,其中顯示消息「正在等待來自JetBrains IDE支持擴展的Chrome ...的連接...」。這不是用於調試JavaScript嗎?它試圖將我的PHP調試爲Javascript嗎?

另外我嘗試使用一些其他類似的結果xdebug客戶端。它連接,然後給出相同的消息。讓我覺得這不是PHPStorm。

一切我已經試過試圖調試以下代碼:

class Zzyzzx_Stores_TestController extends Mage_Core_Controller_Front_Action 
{ 
    public function indexAction() 
    { 
     echo "in the controller 1 <br />"; 
     xdebug_break(); 
     echo "in the controller 2 "; 
     //3 commented lines of unused code 
     // 
     // 
     phpinfo(); 
     //2 commented lines of unused code 
     // 
    } 
} 

符在IDE中設置每個「回聲」,當然你可以看到編碼的休息。

調試這個本地工作正常。

+0

缺少路徑映射,很可能。 1)https://www.jetbrains.com/phpstorm/quickstart/debugger.html 2)https://confluence.jetbrains.com/display/PhpStorm/Debugging+with+PhpStorm – LazyOne

+0

所以..你是否設法解決它? – LazyOne

+0

不,還沒有。由於客戶的緣故,它幾天後就停止了。路徑映射看起來沒問題。有沒有辦法去除所有映射並強制它再次執行嚮導? –

回答

2

斷點不起作用的一個原因是由於Mac OSX的奇數區分大小寫。

我發現如果一個文件名與該類的情況不匹配,那麼只有該文件的斷點將不起作用,即使應用程序的其餘部分調試正常,並且「第一行中斷」顯示調試器一般工作。

OSX上的文件系統基本上是不區分大小寫的,但奇怪的命令行是區分大小寫的,可以欺騙你以爲它更像是其他區分大小寫的Unix系統。這會讓你相信不會有任何不匹配的情況發生,因爲它會被完全破壞,你會注意到!

但是我覺得真的OSX工作更加像Windows - 在這方面非常寬容,直到你上傳文件到Linux服務器...

我有一個類叫LegacyJSONMetadataMapper.phpLegacyJsonMetadataMapper。自動加載器工作正常,應用程序工作正常,PHPStorm沒有提及大小寫的區別 - 我沒有注意到它。但它根本不會觸發任何斷點。過了一個小時後,我找到了映射和服務器配置(這些工作已經工作了好幾年了!),然後我讀a PHPStorm bug report,提到了這方面的一面。我改變了案例,現在斷點工作。

注意,這也恰好如果命名空間路徑中的任何文件夾不命名空間「鼻涕蟲」的情況下匹配了。我只是有這個相同的問題(一些breakbpoints工作,一些沒有)。

相關問題