【问题标题】:How to get a stack-trace via api-call in xdebug?如何通过 xdebug 中的 api-call 获取堆栈跟踪?
【发布时间】:2011-08-18 11:17:37
【问题描述】:

我们正在使用 xdebug 并且跟踪工作如广告在代码执行期间通过..

 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 调用获得清晰简洁的跟踪信息?

非常感谢!!

【问题讨论】:

    标签: php api stack-trace trace xdebug


    【解决方案1】:

    我无法说明为什么跟踪不起作用。但你可以试试这个:

    1. 在您的 php 配置中添加选项 xdebug.trace_enable_trigger=1
    2. 现在您可以通过添加 XDEBUG_TRACE 作为 POST/GET 参数或作为 cookie 来启动 xdebug

    还有一个名为 Easy XDebug 的 Firefox 插件来设置标志

    【讨论】:

    • 您好托马斯,感谢您的回复。听起来是个好主意,但我在 php.ini 中找不到 xdebug.trace_enable_trigger 参数。您使用的是哪个版本的 xdebug - 我的只有 xdebug.profiler_enable_trigger 设置。
    • 我使用的是 Xdebug 2.1.1。如果它不在您的配置中,您可以尝试添加此参数。在某些发行版上,配置文件中未列出默认参数
    • 根据changelogxdebug.trace_enable_trigger是2.2.0添加的
    猜你喜欢
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 2010-09-11
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多