如何从我的 reportError 函数中获取 SpiderMonkey (JSAPI) 中的完整回溯?
我使用 Spidermonkey 在我的应用程序中嵌入 javascript,并且有一个名为 reportError
的函数,它接收 JSErrorReport。
抓取错误的当前行似乎很简单,但是是否有可能获取整个调用路径以显示完整的回溯?
I'm embedding javascript in my app using spidermonkey and I have a function called reportError
that receives a JSErrorReport.
It seems simple to grab the current line of the error, but is it possible to get the entire call path to display a full backtrace?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
它无法通过 JSErrorReport 实现。 相反,您必须查看调试器 APIS。 找到头文件jsdbgapi.h。 它有一个钩子函数列表,如果您在启用调试的情况下运行(JS_SetDebugMode(cx,true)),将调用这些函数。 在这些钩子函数中,您可以简单地调用 js_DumpBacktrace 来获取完整的堆栈。 请注意,如果不先启用调试,js_DumpBacktrace 将不起作用。 在调试模式下,您可以做的不仅仅是打印堆栈。 实际上可以获取函数上下文及其所有参数和局部变量。
It's not doable through JSErrorReport. Instead, you have to look at the debugger APIS. Find header jsdbgapi.h. It has a list of hook functions that will be invoked if you are running with debug enabled(JS_SetDebugMode(cx, true)). Inside those hook functions you could simply call js_DumpBacktrace to get the full stack. Note that js_DumpBacktrace would not work if you do not enable debugging first. In debug mode, you could do way more than printing the stack. It's actually possible to get the function context and alls its arguments and local vars.
可能不是最好的答案,但
xpc_printJSStack
的实现可能对您有帮助:http://mxr.mozilla.org/mozilla-central/source/js/xpconnect/src/XPCDebug.cpp#255Might not be the best answer, but the implementation of
xpc_printJSStack
may be helpful to you: http://mxr.mozilla.org/mozilla-central/source/js/xpconnect/src/XPCDebug.cpp#255