# Debug 模式

Debug 模式旨在方便开发人员调试代码,只用于集成阶段的数据验证。请注意 Debug 模式可能会影响数据采集质量和 App 的稳定性,请不要在线上环境使用。

# 一、开启 Debug 模式

# 1.1 Android SDK

Android SDK 实例支持三种运行模式,在  TDConfig  中定义,请选用 DEBUG 或 DEBUG_ONLY 模式:

/**
 * 实例运行模式, 默认为 NORMAL 模式.
 */
public enum ModeEnum {
    /* 正常模式,数据会存入缓存,并依据一定的缓存策略上报 */
    NORMAL,
    /* Debug 模式,数据逐条上报。当出现问题时会以日志和异常的方式提示用户 */
    DEBUG,
    /* Debug Only 模式,只对数据做校验,不会入库 */
    DEBUG_ONLY
}

比如以下代码是使用 Debug 模式完成 SDK 初始化:

// 获取 TDConfig 实例
TDConfig config = TDConfig.getInstance(mContext, TA_APP_ID, TA_SERVER_URL);
// 设置运行模式为 Debug 模式
config.setMode(TDConfig.ModeEnum.DEBUG);
// 初始化 SDK
instance = ThinkingAnalyticsSDK.sharedInstance(config);

# 1.2 iOS SDK

iOS SDK 实例支持三种运行模式,在 TDConfig 中定义,请选用 DEBUG 或 DEBUG_ONLY 模式:

/**
Debug模式

- ThinkingAnalyticsDebugOff : 默认 不开启Debug模式
*/
typedef NS_OPTIONS(NSInteger, ThinkingAnalyticsDebugMode) {
    /**
     默认 不开启Debug模式
     */
    ThinkingAnalyticsDebugOff      = 0,

    /**
     开启Debug_only模式,只对数据做校验,不会入库
     */
    ThinkingAnalyticsDebugOnly     = 1 << 0,

    /**
     Debug 模式,数据逐条上报。当出现问题时会以日志和异常的方式提示用户
     */
    ThinkingAnalyticsDebug         = 1 << 1
};

比如以下代码是使用 Debug 模式完成 SDK 初始化:

// 获取 TDConfig 实例
TDConfig *config = [[TDConfig alloc] init];
// 设置运行模式为 Debug 模式
config.debugMode = ThinkingAnalyticsDebug;
// 初始化 SDK
ThinkingAnalyticsSDK *instance = [ThinkingAnalyticsSDK startWithAppId:@"YOUR_APPID" withUrl:@"YOUR_SERVER_URL" withConfig:config];

# 1.3 其他客户端 SDK

其他客户端 SDK Debug 模式开启说明详见各 SDK 使用指南:

# 二、添加 Debug 设备

为了避免  Debug  模式在生产环境上线,需指定设备才能开启  Debug  模式。只有在客户端开启了  Debug  模式,并在埋点管理 →Debug 模式中进行接入配置的设备才能开启  Debug  模式。

设备 ID 可以通过以下两种方式获取:

  • 客户端日志:SDK 初始化完成后会打印设备 DeviceId
  • 通过调用 getDeviceId  来获取设备 ID

# 三、使用说明

连接设备后,通过设备上报的数据将实时展示在数据列表中,针对校验出现错误的数据将给出具体的错误原因以便排查。

  1. 切换设备: 点击可切换当前接入设备或添加新设备;
  2. 暂停加载: 测试过程中若希望定位在当前某事件做进一步处理,可点击「暂停加载」,暂停状态下产生的数据(如设置的自动采集事件)将在数据表上方提示。点击「开始加载」可切换至实时加载状态。
  3. 搜索事件: 搜索筛选仅展示指定事件或用户属性。
  4. 埋点对比: 若您在测试数据前,在埋点管理 → 埋点方案模块维护了埋点方案信息,可选择开启“埋点对比”,即可在测试阶段获取测试数据与埋点方案的差异,及时调整埋点代码。

    开启埋点对比后,在错误原因中将增加返回基于埋点方案对比的错误信息(对比内容不包括预置属性)。可能出现的错误包括:

  • 事件不在埋点方案中
  • 存在不在埋点方案中,但实际有上报的属性
  • 存在属性缺失,即在埋点方案中,但实际无上报的属性
  • 存在上报属性类型与埋点方案中的属性类型不一致
  1. 清空列表: 点击可清空当前数据列表,被清空的数据将不再展示。清空操作只清空日志,不删除已入库事件。

# 四、最佳实践

# 4.1 使用 Debug 模式调试埋点

Debug 模式非常适合在新增埋点时,对埋点的正确性进行验证。在测试埋点前,先获取设备在 TA SDK 中的设备 ID#device_id,在 Debug 模式中添加该设备。之后在 IDE 或自己的设备中触发埋点,同时关注 Debug 模式中展示的数据,主要关注数据是否上传以及数据是否正确。

# 4.2 开启埋点对比

在“埋点方案”页上传方案后,您可选择开启“埋点对比”,即可在测试阶段获取测试数据与埋点方案的差异,及时调整埋点代码。注意该功能的校验结果中不包括预置属性的校验。