2011-08-18 101 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