JS_SetErrorReporter 1.6里面叫什么名字了啊

如题:JS_SetErrorReporter这个是1.6之前的版本调用的函数。现在在1.6里面该调用哪个函数呢?

没人关注这个问题么??
现在接入的Bugly需要调用这个函数 升级1.6找不到了,应该掉哪个函数呢???

1.6 用的是

JS::SetWarningReporter(_cx, ScriptingCore::reportError);

不过 SetErrorReporter 应该也还是可以

SetWarningReporter 这个函数有,但是SetErrorReporter这个没有 我搜索了整个目录都没找到该函数

JS::SetErrorReporter、JS_SetErrorReporter 都没有

那应该是 Spidermonkey 移除了

那现在怎么才能从脚本中捕获所有脚本的报错信息?能给条生路,我现在升级到1.6后,bugly费了:(

用 warning reporter 啊

官方可以考虑在这里加个方法,这样写和原来的调用一致, 就可以在 __errorHandler里面捕获错误回调

嗯嗯,谢谢反馈

void BuglyJSAgent::registerJSExceptionHandler(JSContext *cx){
CCLOG("-> %s", PRETTY_FUNCTION);

//JS_SetErrorReporter(cx, BuglyJSAgent::reportJSError);
我的理解是这样的不知道对不对 
JS::SetWarningReporter(cx, ScriptingCore::reportError);

}

void BuglyJSAgent::reportJSError(JSContext *cx, const char *message, JSErrorReport *report){
CCLOG("-> %s", PRETTY_FUNCTION);

const char* format = "%s:%u:%s\n";
const char* filename = report != nullptr && report->filename ? report->filename : "<no filename=\"filename\">";

size_t bufLen = strlen(format) + strlen(filename) + strlen(message) + 32;
char* traceback = (char*)malloc(bufLen);
memset(traceback, 0, bufLen);
sprintf(traceback, format, filename, (unsigned int)report->lineno, message);

const char *reason = strstr(message, ":");
const char *name = message;

if (reason == nullptr) {
    reason = message;
} else {
    size_t len = strlen(message) - strlen(reason);
    if (len > 0) {
        name = strndup(message, len);
        reason ++;
    }
}

CrashReport::reportException(CATEGORY_JS_EXCEPTION, (name != message) ? name : "JSError", message, traceback);
free(traceback);

if (name != message) {
    free((void*)name);
}

}

对~~~

你们1.6用bugly接入有统计数据吗?
我1.5接入没问题,现在升级到1.6,没有统计数据了,一个启动和激活都看不到呢,接入原生sdk没问题,用了cocos sdk就不行。

只能分平台接入了,不过js异常报错平台版本没有,主要就是为了这个。

JS::SetWarningReporter设置了,js未捕获异常没有回调。。。你们捕获到错误了吗?
这个搞不定就不敢用1.6哦,,,,
(Win7_64位, vs2015, ccc1.6.1beta2)

这个问题怎么解决?

你就改了这两处就可以了吗

reportError你这个参数是怎么实现的?

同问。。。

ScriptingCore::reportError 还是编译不过啊