异常分析相关接口

设置面包屑

研发人员可以在应用程序的任意位置调用「面包屑」接口进行埋点。当应用程序发生崩溃时,SDK 会按代码的触发顺序收集埋点信息并在崩溃轨迹中高亮显示,以协助研发人员在应用崩溃时了解代码调用逻辑。

  • 相关接口
/**
 * @breadcrumb:自定义信息,最多包含100个字符,支持中文、英文、数字、下划线
 */
+(void)leaveBreadcrumb:(NSString *)breadcrumb;
  • 代码示例
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOption:(NSDictionary *)launchOptions
{
  // 设置面包屑
    [NBSAppAgent leaveBreadcrumb:@"didFinishLaunchingWithOptions"]; 
    return YES;
}

自定义信息

在应用发生崩溃的时候,研发人员往往需要更多的信息以收集现场环境,可以通过调用「自定义信息」接口上传额外信息,协助分析崩溃问题,采集的自定义信息会在异常详情页「自定义信息」中展示。

  • 相关接口
/**
 * 此函数可以在任何位置多次调用,最多可添加10条附加信息,每条附加信息最大支持100个字节,随崩溃上传。
 */
+(void)setCustomerData:(NSString*)data forKey:(NSString*)key;
  • 代码示例
- (void)doSomething
{
    [NBSAppAgent setCustomerData:@"value" forKey:@"key"];
    ...
}

自定义错误

使用「自定义错误」接口可以采集研发人员「try / catch 异常」和「业务错误」并在基调听云平台「异常分析」→「错误」中进行展示,可以帮助研发人员收集异常和错误。

  • 相关接口
/**
 * 参数说明:
 * @message:不可以传空,最大长度1024字节,超出截取前1024字节
 * @exception:上传exception取到抛出时的堆栈,不传只取到调用接口的堆栈,多线程下只取调用接口的线程的堆栈,堆栈最大深度为100
 * @metaData:value值支持 NSNumber,NSString,NSArray,NSDictionary类型,最大128k,超出设置metadata为:"metaData":{"error":"metaData的大小大于     最大限制128K"}
 */
+ (void)reportError:(NSString *)message withMetaData:(NSDictionary *)metaData;
+ (void)reportError:(NSString *)message withException:(NSException *)exception withMetaData:(NSDictionary *)metaData;
  • 代码示例
- (void)doSomething
{
    ...
    if(success){
        ...
    }else{
        NSDictionary *dict = @{@"k1":@"v1",@"K2":@"V2"};
        [NBSAppAgent reportError:@"errorMsg" withMetaData:dict];
    }
    ...
}
- (void)doSomething
{
    @try {
         // ... do something that might throw an exception ...
    } 
    @catch (NSException *exception) {
        // report the error
        NSDictionary *dict = @{@"k1":@"v1",@"K2":@"V2"};
        [NBSAppAgent reportError:@"errorMsg" withException:exception withMetaData:dict];
    } 
    @finally {
    }
    ...
}

设置崩溃类型采集

若无需采集某种 signal 类型的信号错误可调用此接口进行忽略,支持忽略单个类型和多个类型。

  • 相关接口
/**
 * SDK支持采集的信号
 * SIGABRT, //6
 * SIGBUS,  //10
 * SIGFPE,  //8
 * SIGILL,  //4
 * SIGSEGV, //11
 * SIGSYS,  //12
 * SIGTRAP, //5
 * SIGKILL,//9
 * @ignore  参数支持字符串、NSNumber、NSArray
 */
+ (void)ignoreSomeSignalCrash:(id)ignore;
  • 代码示例
int main(int argc, char * argv[]) {
    @autoreleasepool {
        // 初始化之前调用
            [NBSAppAgent ignoreSomeSignalCrash:@"SIGABRT"];
        [NBSAppAgent startWithAppID:@"appkey" location:YES];
            ...
    } 
}

设置异常回调

使用「异常回调」接口后可以在发生卡顿或上传崩溃数据时获取SDK采集的异常数据「崩溃、卡顿数据」。 注:需要在崩溃上传或发生卡顿前调用「SDK连服务器成功后就会上传崩溃数据」。

  • 相关接口
/**
 * @brief 当发生crash或者卡顿时设置自定义回调
 * @type 值为NBSCallBackOnCrash或NBSCallBackOnANR
 */
+ (void)setCallBack:(NBSCallBack)callback withType:(NBSCallBackType)type;
  • 代码示例
- (void)getExceptionInfo
{
    // context 为SDK采集的崩溃或卡顿的上下文信息
    [NBSAppAgent  setCallBack:^(NSDictionary *context) {
        ...
    } withType:NBSCallBackOnCrash];
}

设置越狱设备不收集崩溃、卡顿

调用该接口后,不再收集越狱设备下的崩溃、卡顿信息。

  • 相关接口
/**
 * @brief 越狱设备不采集崩溃与卡顿数据,需在SDK start 之前调用
 */
+ (void)disableJailbreakExceptionDataCollection;
  • 代码示例
int main(int argc, char * argv[]) {
    @autoreleasepool {
        // 初始化之前调用
            [NBSAppAgent disableJailbreakExceptionDataCollection];
        [NBSAppAgent startWithAppID:@"appkey" location:YES];
            ...
    } 
}
© 2007-2024 北京基调网络股份有限公司 all right reserved,powered by Gitbook本文档更新于: 2024-03-04 10:18

results matching ""

    No results matching ""