2010-06-29 91 views
4

我在我的Apache上安裝了xdebug,並且如果我在Netbeans中定義了一個斷點,執行就會正常運行。但是,如果我使用symfony phpunit:test-all執行測試,則在給定的中斷點上執行不會中斷。一起使用netbeans,xdebug,symfony和phpunit

任何想法? cowabunga!

回答

0

當你說你在Netbeans中定義了一個斷點,它打破了正常,你是在談論從Netbeans運行單元測試還是運行一個觸發Netbeans斷點的Web應用程序?

無論哪種方式,我的第一個猜測是這兩個場景使用不同的PHP.INI文件。獲取你的單元測試之一來轉儲配置信息,我敢說你會很快看到。找到正在命令行中使用的PHP.INI,並確保爲該場景設置了XDebug。

我希望這是有道理的。我現在完全沒有咖啡。

+0

我運行一個web應用程序,觸發Netbeans中的斷點。 如果我運行@php -i @,我看到xdebug支持已啓用,因此我認爲xdebug在命令行中配置良好。 – cowabunga1984 2010-06-30 06:59:32

+0

很酷。您可以嘗試的一件事是將xdebug.remote_autostart = 1添加到您的PHP.INI文件的[xdebug]部分。問題可能與CLI沒有推送適當的XDebug cookie/GET參數來實際觸發它有關。如果這不起作用,請務必在PHP.INI中檢查您的其他xdebug設置。 – Narcissus 2010-06-30 11:33:50

+0

我嘗試了一些配置,但沒有任何工作。也許它不起作用,因爲我使用ZendServer。在我可以閱讀的Xdebug文檔中,zend optimizer和xdebug的組合可能會導致兼容性問題。 ATM我想我應該重試配置xdebug,如果我安裝了XAMPP或其他服務器... – cowabunga1984 2010-07-01 06:48:31

0

我不使用netbeans,但我不認爲netbeans會修改您放入中斷點的文件,我不認爲symfony可以讀取您的netbean配置以找出破壞的位置。

此外,如果你正在運行測試netbeans內的所有任務,並期望測試文件中斷,我不認爲這將工作或任務分叉php進程我相信,這些進程將不會被netbeans讀取。

當然所有的假設。

+1

我認爲,xdebug等待配置的端口(9000)上的連接。如果我運行測試,xdebug必須等待,Netbeans必須連接到xdebug(使用給定的端口)。之後,Netbeans配置斷點,測試應該按預期中斷... 這就是爲什麼我認爲它應該工作,如果進程是分叉的事件。 – cowabunga1984 2010-06-30 07:08:36

9

要調試命令行腳本,第一齣口XDEBUG_CONFIG變量,就像這樣:

export XDEBUG_CONFIG="idekey=netbeans-xdebug"(在Unix/Linux/OS X)

set XDEBUG_CONFIG=idekey=netbeans-xdebug(Windows)中

(注:我沒有測試Windows命令,你可能不得不跳過=這個字符,或者這個命令可能看起來有些不同,如果是這樣的話,我希望有人過來糾正我的意見。)

說明:當您爲通過Apache運行的腳本打開調試會話時,NetBeans將打開瀏覽器到以「XDEBUG_SESSION_START=netbeans-xdebug」結尾的URL。發生這種情況時,Xdebug知道攔截此參數,併爲瀏覽器提供一個包含此調試會話信息的cookie。

上面的命令與在命令行環境中設置cookie等效。

+1

哇,我不能相信這花了我很長時間才發現,我已經放棄使用調試器爲控制檯,直到現在 – Matt 2012-04-29 17:24:51