如何从我的reportError函数中获取SpiderMonkey(JSAPI)中的完整回溯?

时间:2009-01-23 14:18:01

标签: javascript c spidermonkey jsapi

我正在使用spidermonkey在我的应用中嵌入javascript,并且我有一个名为reportError的函数,它接收JSErrorReport

获取错误的当前行似乎很简单,但是可以让整个调用路径显示完整的回溯吗?

2 个答案:

答案 0 :(得分:1)

通过JSErrorReport无法实现。相反,您必须查看调试器APIS。找到标头jsdbgapi.h。它有一个钩子函数列表,如果你在启用调试的情况下运行它将被调用(JS_SetDebugMode(cx,true))。在这些钩子函数中,你可以简单地调用js_DumpBacktrace来获得完整的堆栈。请注意,如果您不首先启用调试,则js_DumpBacktrace将不起作用。在调试模式下,您可以做的不仅仅是打印堆栈。它实际上可以获得函数上下文,并且可以获取其参数和本地变量。

答案 1 :(得分:0)

可能不是最佳答案,但xpc_printJSStack的实施可能对您有所帮助:http://mxr.mozilla.org/mozilla-central/source/js/xpconnect/src/XPCDebug.cpp#255