Crash上报
Unity3D
概述
接入向导
查看数据
上报额外业务日志
上报额外二进制数据
上报输出日志
动态关闭bugly上报
常见问题
Android
概述
接入向导
查看数据
上报额外业务日志
上报额外二进制数据
上报输出日志
动态关闭bugly上报
常见问题
IOS
概述
接入向导
查看数据
上报额外业务日志
上报额外二进制数据
上报输出日志
动态关闭bugly上报
常见问题
其他
数据结构
系统工具
Crash上报 / Android / 概述

概述

MSDK集成了Bugly的数据上报功能,能够将客户端crash时客户端的信息上传到服务器,供开发者查看。 能帮助开发者发现应用在线上的致命bug。

显示详情

接入向导

MSDK 3.3.30 版本开始,Bugly 以插件化形式提供,业务可按需合入。如果不需要,可按照对应路径删除即可。

插件路径

  • MSDKLibrary/libs/MSDKBugly.jar
  • MSDKLibrary/libs/arm64-v8a(armeabi、armeabi-v7a、x86、x86_64)/libBugly_Native.so

1 前置条件


1) 您已经按初始化模块说明完成 初始化


2) 打开和关闭bugly上报的开关需要在/assets/msdkconfig.ini中设置。

;关闭bugly上报开关,默认应将其设为false,设为true即关闭了crash上报功能
  CLOSE_BUGLY_REPORT=false


3) 按照约定进行混淆

如果您不需要混淆jar包,请忽略这个环节。如果您需要混淆jar包,请不要混淆msdk*.jar文件,或者混淆msdk*.jar文件时请把下面
的keep信息添加到App的混淆配置中:

-keep class * extends android.app.Activity{*;}
-keep class * extends android.app.Service{*;}
#Bugly接口
-keep public class com.tencent.bugly.crashreport.crash.jni.NativeCrashHandler{public *; native <methods>;}
-keep public interface com.tencent.bugly.crashreport.crash.jni.NativeExceptionHandler{*;}


4) App 还原符号表配置 请到Bulgy平台设置还原符号表,网址为:http://bugly.qq.com/,可以参考bugly官网中符号表配置中的方式来进行配置。

完成了以上4步后,您就可以查看线上应用crash时的堆栈信息了。

2 使用crash上报功能

crash上报功能可以在应用crash时上报字符串,二进制信息到服务器供您分析。详见上报添加额外业务日志上报添加额外二进制数据上报输出日志

查看上报数据

请使用协作者账号登录到bugly.qq.com的网站上,选择您要查看的应用,如下图所示,查看bugly上报的数据。如果您不知道协作者账号,请企业微信联系“MSDK助手”账号。

上报添加额外业务日志

1 概要说明

当程序Crash时,有时需要添加一些额外的自定义数据

2 注册回调

1)功能描述

当程序Crash时,有时需要添加一些额外的自定义数据,随crash日志一起上报到Bugly平台,这样可以更好的定位造成crash的原因。 如概述中3.1上传额外字符串所示,上报的数据可以在Bugly平台上可以在“自定义日志”->“额外数据”中找到。

2)接口声明
void WGSetObserver(WGPlatformObserver *pObserver)
3)参数说明
参数名称 类型 说明
observer WGPlatformObserver 类 MSDK回调类,参考示例代码
4)返回值

5)示例代码
class GlobalCallback : public WGPlatformObserver
{
   public:
    virtual std::string OnCrashExtMessageNotify()
    {
        // 此处游戏补充crash时上报的额外信息
        std::string str="new jni update extra jni crash log now!";
        LOGD("OnCrashExtMessageNotify %s", str.c_str());
        return str;
    }
    // TODO 异账号逻辑先注释
    /*virtual bool OnDiffAccountAlert()
    {
        return false;
    }*/


    virtual ~GlobalCallback()
    {
    }
};
6)特殊说明

在进行native上报时,该回调有可能失效。

7)名词解释

3 接口调用

上报添加额外二进制数据

1 概要说明

当程序Crash时,有时需要添加一些额外的二进制数据

2 注册回调

1)功能描述

当程序Crash时,有时需要添加一些额外的二进制数据,随crash日志一起上报到Bugly平台,这样可以更好的定位造成crash的原因。最终可以在bugly平台上查看错误详情,二进制数据目前可以在“跟踪数据>附件信息”下找到具体的crash事件,并下载二进制数据文件。

2)接口声明
void WGSetObserver(WGPlatformObserver *pObserver)
3)参数说明
参数名称 类型 说明
observer WGPlatformObserver 类 MSDK回调类,参考示例代码
4)返回值

5)示例代码
class GlobalCallback : public WGPlatformObserver
{
   public:
    virtual std::vector<char> OnCrashExtDataNotify()
    {
        // 此处游戏补充crash时上报的额外信息
        LOGD("OnCrashExtDataNotify %s", "extra binary data");
        //最大值为30k
        char *uploadData=new char[30 * 1024];
        //在此处添加要上报的二进制数据
        memset(uploadData, 6, sizeof(char) * 30 * 1024);
        std::vector<char> extData(uploadData, uploadData + (30 * 1024));

        delete[] uploadData;
        uploadData=NULL;

        return extData;
    }


    virtual ~GlobalCallback()
    {
    }
};
6)特殊说明

在native上报时,该回调有可能失效。

7)名词解释

3 接口调用

上报Lua/C#/JS脚本错误

1 概要说明

当游戏Lua/C#/JS脚本发生异常时,可以向bugly上报这些异常信息

2 注册回调

1)功能描述

上报脚本异常信息至bugly,可以在bugly上"错误分析" ->"Lua脚本错误/C#脚本错误/JS脚本错误"标签下查看这些上报

2)接口声明
void WGReportException(eExceptionType exception_type,
                           unsigned char *exception_name,
                           unsigned char *exception_msg,
                           unsigned char *exception_stack,
                           std::vector<KVPair> &ext_info)
3)参数说明
参数名称 类型 说明
exception_type eExceptionType枚举类型 异常上报类型
exception_name unsigned char * 异常名字
exception_msg unsigned char * 异常信息
exception_stack unsigned char * 异常堆栈
ext_info vector 事件内容,一个key-value形式的vector;key最大长度64,value最大长度1024,key个数最大50,key建议使用"B1","B2"规则命名,以减少流量消耗
4)返回值

5)示例代码
std::vector<KVPair>extInfo;
KVPair item;
item.key="extInfo_Body";
item.value=std::string("wegame_extInfo_body");
eveList.push_back(item);
WGPlatform::GetInstance()->WGReportException((eExceptionType) exceptionType,
                                            "MSDK_excetipon_name",
                                            "MSDK_exception_msg",
                                            "MSDK_exception_stack_test",
                                            extInfo);
6)特殊说明

7)名词解释

上报输出日志

1 概要说明

上报输出日志

2 注册回调

3 接口调用

1)功能描述

在某些native crash的场景下,注册给bugly的OnCrashReportDataEvent 和CrashReportDataEvent事件回调函数可能无法得到执行,推荐您使用自定义日志的接口:用于记录一些开发者关心的调试日志,可以更全面地反应App异常时的前后文环境。使用方式与android.util.Log一致。用户传入TAG和日志内容。该日志将在Logcat输出,并在发生异常时上报,上报日志最大30K。

在bugly页面上可以在 "错误分析" -> "自定义错误" 查看上报的自定义日志。

2)接口声明
void WGBuglyLog(eBuglyLogLevel level, unsigned char *log);
3)参数说明
参数名称 参数类型 说明
level enum 详见结构体说明中eBuglyLogLevel部分
log unsigned char * 要上传(打印)的内容
4)返回值

5)示例代码
WGPlatform::GetInstance()->WGBuglyLog((eBuglyLogLevel)cLevel, 
                                      (unsigned char *)"bugly message test");
6)特殊说明

用户传入TAG和日志内容。该日志将在Logcat输出,并在发生异常时上报,上报日志最大30K。

7)名称解释

动态关闭bugly上报

1 概要说明

动态关闭bugly上报。调用时会关闭崩溃上报,其他bugly功能不影响;重新启动应用后再触发的崩溃会正常上报。

2 接口调用

1)功能描述

有些场景下,应用不需要崩溃上报,如:有些应用在杀进程时触发的上报不想上报到bugly;此时可以调用该接口关闭崩溃上报,其他bugly功能不影响;重新启动应用后再触发的崩溃会正常上报。

2)接口声明
void WGCloseCrashReport();
3)参数说明

4)示例代码
WGPlatform::GetInstance()->WGCloseCrashReport();
6)特殊说明

调用该接口关闭崩溃上报后,其他bugly功能不影响;重新启动应用后再触发的崩溃会正常上报。

7)名词解释

常见问题