如题: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 啊
嗯嗯,谢谢反馈
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 还是编译不过啊
