2011-08-18 65 views
2

我們使用Xdebug的和代碼執行通過在追蹤像宣傳的那樣..如何通過xdebug中的api調用獲取堆棧跟蹤?

function someGetUsersHelper() { 
    xdebug_start_trace(); 
    [SOME CODE HERE] 
    xdebug_stop_trace(); 
} 

如果網頁/腳本通過加載全部執行然而它僅跟蹤代碼的部分包裹通過請求

index.php 

但跟蹤在瀏覽器頁面無法正常工作,當我們通過

調用該函數作爲一個API調用
index.php?api=getUsers 

即使成功執行了相同的功能,它也不會跟蹤。

作爲附加說明:如果函數是從phpunit測試用例中調用,或者如果我們在php.ini中設置了xdebug.auto_trace = 1,但是這給我們留下了一個很長的亂糟糟的跟蹤文件,跟蹤也可以使用。

所以,問題是這樣的:

  • 可能是什麼問題/原因以及我們如何設法讓通過調用API的 所需的清晰,簡潔的痕跡?

非常感謝!

回答

3

我不能說爲什麼跟蹤不起作用。不過你可以試試這個:

  1. 添加選項xdebug.trace_enable_trigger=1在你的PHP配置
  2. 現在,你可以通過添加XDEBUG_TRACE作爲POST/GET參數啓動了XDebug或作爲cookie

還有一個名爲的Firefox插件Easy XDebug設置標誌

+0

您好托馬斯,感謝您的回覆。聽起來很不錯,但我在php.ini中找不到一個xdebug.trace_enable_trigger參數。你使用的是哪個版本的xdebug - 我只有一個xdebug.profiler_enable_trigger設置。 – Bruiser

+1

我正在使用Xdebug 2.1.1。如果它尚不在您的配置中,您可以嘗試添加此參數。在某些發行版中,默認參數未在配置文件中列出 –

+0

根據[changelog](http://xdebug.org/updates.php),在2.2.0中添加了「xdebug.trace_enable_trigger」 – Znarkus