iOS JavascriptCore 异常详细的堆栈跟踪信息

Zha*_*hao 6 javascriptcore swift

iOS中的异常堆栈跟踪似乎只包含方法名称或存在错误。下面是我在 JSContext 中处理异常的代码。

context.exceptionHandler = { (ctx: JSContext!, value: JSValue!) in
    // type of String
    let stacktrace = value.objectForKeyedSubscript("stack").toString()
    // type of Number
    let lineNumber = value.objectForKeyedSubscript("line")
    // type of Number
    let column = value.objectForKeyedSubscript("column")
    let moreInfo = "in method \(stacktrace)Line number in file: \(lineNumber), column: \(column)"
    Logger.error("JS ERROR: \(value) \(moreInfo)")
}
Run Code Online (Sandbox Code Playgroud)

我得到了如下日志

ERROR : JSContextRenderer.swift:308 : setupContext : JS ERROR: Error in method clearBackground
Line number in file: 162, column: 12"
Run Code Online (Sandbox Code Playgroud)

请注意,在“clearBackground”名称之后有一个新行,我认为那里可能有更多信息。

有类似经历的人可以证实一下吗?任何帮助表示赞赏。谢谢。

Zha*_*hao 1

看起来它确实在 中显示了更多信息stack。这是我得到的日志信息之一:

JS ERROR: TypeError: undefined is not a function (evaluating 'msg.__assert__()') in method assert
syncShots
updateSync
initSync
setState
onLogicStateChanged
onLogicStateChanged
[native code]
updateMove
sendMove
shoot
onTouchUp
[native code]
_handleEvent
_dispatchEvent
. Line number in file: 183, column: 20
Run Code Online (Sandbox Code Playgroud)