我正在使用spidermonkey在我的應用中嵌入JavaScript,並且我有一個名爲reportError
的函數,它收到JSErrorReport。如何從我的reportError函數中獲取SpiderMonkey(JSAPI)中的完整回溯?
抓取錯誤的當前行看起來很簡單,但是可以讓整個調用路徑顯示完整的回溯?
我正在使用spidermonkey在我的應用中嵌入JavaScript,並且我有一個名爲reportError
的函數,它收到JSErrorReport。如何從我的reportError函數中獲取SpiderMonkey(JSAPI)中的完整回溯?
抓取錯誤的當前行看起來很簡單,但是可以讓整個調用路徑顯示完整的回溯?
可能不是最好的答案,但xpc_printJSStack
實施可能對你有幫助:http://mxr.mozilla.org/mozilla-central/source/js/xpconnect/src/XPCDebug.cpp#255
這不是可行的通過JSErrorReport。相反,你必須看看調試器APIS。查找標題jsdbgapi.h。它具有一個鉤子函數列表,如果您在調試啓用的情況下運行(JS_SetDebugMode(cx,true)),將會調用它。在這些鉤子函數中,您可以簡單地調用js_DumpBacktrace來獲得完整的堆棧。請注意,如果您不首先啓用調試,js_DumpBacktrace將不起作用。在調試模式下,您可以做的不僅僅是打印堆棧。實際上有可能獲得函數上下文,並且獲得它的參數和局部變量。