Как я могу получить полную обратную трассировку в SpiderMonkey (JSAPI) из моей функции reportError? - PullRequest
9 голосов
/ 23 января 2009

Я встраиваю javascript в свое приложение с помощью spidermonkey, и у меня есть функция с именем reportError, которая получает JSErrorReport .

Кажется простым захватить текущую строку ошибки, но возможно ли заставить весь путь вызова отображать полную обратную трассировку?

Ответы [ 2 ]

1 голос
/ 03 марта 2014

Это невозможно сделать через JSErrorReport. Вместо этого вы должны посмотреть на отладчик APIS. Найти заголовок jsdbgapi.h. У него есть список подключаемых функций, которые будут вызываться, если вы работаете с включенной отладкой (JS_SetDebugMode (cx, true)). Внутри этих функций-хуков вы можете просто вызвать js_DumpBacktrace, чтобы получить полный стек. Обратите внимание, что js_DumpBacktrace не будет работать, если вы сначала не включите отладку. В режиме отладки вы можете сделать гораздо больше, чем просто распечатать стопку. На самом деле можно получить контекст функции и все ее аргументы и локальные переменные.

0 голосов
/ 06 июня 2012

Возможно, это не лучший ответ, но реализация xpc_printJSStack может быть вам полезна: http://mxr.mozilla.org/mozilla-central/source/js/xpconnect/src/XPCDebug.cpp#255

...