# 模式 F — Debug / 校验脚本

## 产物
`te-debug.<ext>` 单文件；用于快速验证 SDK 配置是否正确。

---

## Debug 模式验证方式

使用 debug 模式时，需要在 AE 后台添加 debug 设备 ID，数据才会在 AE Web 的 **Debug 数据页面** 显示。

### 验证步骤

| 步骤 | 操作 |
|---|---|
| 1 | 在 AE 后台添加 debug 设备 ID：埋点管理 → Debug 数据 → 添加设备 |
| 2 | 运行 debug 脚本发送测试事件 |
| 3 | 打开 AE Debug 页面：`https://<host>/#/data/debug` |
| 4 | 筛选对应的 `distinct_id` 或 `device_id` 查看上报数据 |

### 客户端和服务端 SDK 通用说明

- 两者都使用 **TDDebugConsumer**（或对应平台的 debug 模式 API）
- 都需要在 AE 后台添加设备 ID 才能在 Debug 页面查看数据
- 校验失败时 SDK 会打印错误日志或抛异常（具体行为因语言而异）

---

## 各平台 Debug 模式 API

### 客户端 SDK

| SDK | debug 模式 API | 参考文档 |
|---|---|---|
| Unity SDK | `TDConfig config = new TDConfig(appId, serverUrl); config.mode = TDMode.DEBUG; TDAnalytics.Init(config);` | `客户端-sdk/游戏引擎/unity/进阶指南/实时调试.md` |
| Android SDK | `TDConfig config = new TDConfig(this, serverUrl, appId); config.setMode(TDConfig.Mode.DEBUG); TDAnalytics.init(this, config);` | `客户端-sdk/android/进阶指南/实时调试.md` |
| iOS SDK | `TDConfig *config = [[TDConfig alloc] initWithAppId:appId serverUrl:serverUrl]; config.mode = TDModeDebug; [TDAnalytics startWithConfig:config];` | `客户端-sdk/ios/进阶指南/实时调试.md` |
| JavaScript SDK | `ta.init({ appId: appId, server_url: serverUrl, debug: true });` | `客户端-sdk/jav
         -ascript/进阶指南/实时调试.md` |  
| 小程序 SDK | `ta.init({ appId: appId, server_url: serverUrl, debug: true });` | `客户端-sdk/小程序小游戏/进阶指南/实时调试.md` |
| CocosCreator | 参考文档 | `客户端-sdk/游戏引擎/cocoscreator/进阶指南/实时调试.md` |
| Cocos2d-x | 参考文档 | `客户端-sdk/游戏引擎/cocos2d-x/进阶指南/实时调试.md` |
| Unreal SDK | 参考文档 | `客户端-sdk/游戏引擎/unreal/进阶指南/实时调试.md` |
| Flutter SDK | 参考文档 | `客户端-sdk/跨平台框架/flutter/进阶指南/实时调试.md` |
| React Native | 参考文档 | `客户端-sdk/跨平台框架/react-native/进阶指南/实时调试.md` |

### 服务端 SDK

| 语言 | DebugConsumer API | 参考文档 |
|---|---|---|
| Java | `new TDDebugConsumer(serverUrl, appId, deviceId)` | `服务端-sdk/java/进阶指南/实时调试.md` |
| Python | `TDDebugConsumer(serverUrl, appId, device_id="...")` | `服务端-sdk/python/进阶指南/实时调试.md` |
| Go | `NewDebugConsumerWithDeviceId(serverUrl, appId, false, deviceId)` | `服务端-sdk/golang/进阶指南/实时调试.md` |
| Node.js | `ThinkingData.initWithDebugMode(appId, serverUrl, { deviceId: "..." })` | `服务端-sdk/nodejs/进阶指南/实时调试.md` |
| PHP | `new TDDebugConsumer(serverUrl, appId, deviceId)` | `服务端-sdk/php/进阶指南/实时调试.md` |
| Ruby | `TDDebugConsumer.new(serverUrl, appId, deviceId)` | `服务端-sdk/ruby/进阶指南/实时调试.md` |
| Erlang | `tddebug_consumer:new(ServerUrl, AppId, DeviceId)` | `服务端-sdk/erlang/进阶指南/实时调试.md` |
| Lua | `TDDebugConsumer.new(serverUrl, appId, deviceId)` | `服务端-sdk/lua/进阶指南/实时调试.md` |
| C | `td_debug_consumer_new(serverUrl, appId, deviceId)` | `服务端-sdk/c/进阶指南/实时调试.md` |

---

## Skill 生成时的检查点

生成 debug 脚本时，skill 必须：

1. **先读对应 SDK 的「实时调试」文档**（见下方参考文档路径），确认该 SDK 的 debug 模式 API 和用法（表中 API 仅为索引参考，实际用法可能有差异）
2. 使用对应平台的 **TDDebugConsumer** 或 debug 模式 API
3. 设置 `deviceId`（如 `claude-test-device`），用于 AE 后台添加设备
4. 从 plan 中读取 `SERVER_URL`、`appId`（不是 web host）
5. 从 plan 中取 3 个代表性业务事件（如有对象组属性，需完整构造）
6. 建议开启 SDK 日志打印（便于排查问题）
7. 文件名必须与类名一致（如 Unity: `TEDebugScript.cs`）

### 交付后提示

**平台过滤说明**：
- xlsx "采集端" 值到 `platform` 字段的映射：
  - `客户端` / `client` → `platform: "client"`
  - `服务端` / `server` → `platform: "server"`
  - `客户端,服务端` / `client,server` → `platform: "both"`
- 客户端 debug 脚本：只包含 `platform === "client"` 或 `platform === "both"` 的事件
- 服务端 debug 脚本：只包含 `platform === "server"` 或 `platform === "both"` 的事件
- 若 xlsx 无 platform 列，则包含全部事件（向后兼容）

```
验证步骤：
1. 在 AE 后台添加 debug 设备 ID：埋点管理 → Debug 数据 → 添加设备（输入 deviceId）
2. 运行 debug 脚本
3. 打开 AE Debug 页面：https://<host>/#/data/debug
4. 筛选对应的 distinct_id 或 device_id 查看上报数据
5. 检查事件属性结构是否正确（特别是对象组属性）
```

### 参考文档路径

所有 SDK 的实时调试文档位于：
- `~/.ae-tracking/wiki/te-docs/raw/接入指南/客户端-sdk/<sdk>/进阶指南/实时调试.md`
- `~/.ae-tracking/wiki/te-docs/raw/接入指南/服务端-sdk/<language>/进阶指南/实时调试.md`