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

发布于 2024-07-11 17:27:48 字数 237 浏览 10 评论 0原文

我使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

身边 2024-07-18 17:27:49

它无法通过 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.

红焚 2024-07-18 17:27:49

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

Might 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文