Ich habe JavaScript mit spidermonkey in meine App eingebettet und ich habe eine Funktion namens reportError
, die einen JSErrorReport erhält .
Es scheint einfach zu sein, die aktuelle Zeile des Fehlers zu erfassen, aber ist es möglich, dass der gesamte Aufrufpfad eine vollständige Rückverfolgung anzeigt?
Es ist nicht durch JSErrorReport machbar. Stattdessen müssen Sie sich den Debugger APIS ansehen. Suchen Sie den Header jsdbgapi.h. Es hat eine Liste von Hook-Funktionen, die aufgerufen werden, wenn Sie mit aktiviertem Debug (JS_SetDebugMode (cx, true)) arbeiten. Innerhalb dieser Hook-Funktionen könnten Sie einfach js_DumpBacktrace aufrufen, um den vollständigen Stack zu erhalten. Beachten Sie, dass js_DumpBacktrace nicht funktioniert, wenn Sie das Debuggen nicht zuerst aktivieren. Im Debug-Modus können Sie viel mehr tun als nur den Stapel zu drucken. Es ist tatsächlich möglich, den Funktionskontext und all seine Argumente und lokalen Variablen zu erhalten.
Vielleicht nicht die beste Antwort, aber die Implementierung von xpc_printJSStack
könnte für Sie hilfreich sein: Ссылка
Tags und Links javascript c spidermonkey jsapi