1e41f4b71Sopenharmony_ci# Hitrace 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci 4e41f4b71Sopenharmony_ci## 概述 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_cihiTraceMeter为开发者提供系统性能打点接口。 7e41f4b71Sopenharmony_ci 8e41f4b71Sopenharmony_ci开发者通过在自己的业务逻辑中的关键代码位置调用HiTraceMeter系统跟踪提供的API接口,能够有效进行关键执行流程耗时度量和问题定位。 9e41f4b71Sopenharmony_ci 10e41f4b71Sopenharmony_cihitraceChain为开发者提供跨线程、跨进程的分布式跟踪能力。 HiTraceChain支持在业务执行流程中,生成和传递唯一跟踪标识,在业务流程中输出的各类调试信息中(包括应用事件、系统事件、日志等)携带该跟踪标识。 在调试、问题定位过程中,开发人员可以通过该唯一跟踪标识将本次业务流程端到端的各类信息快速关联起来。 11e41f4b71Sopenharmony_ci 12e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 13e41f4b71Sopenharmony_ci 14e41f4b71Sopenharmony_ci**起始版本:** 10 15e41f4b71Sopenharmony_ci 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_ci## 汇总 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ci 20e41f4b71Sopenharmony_ci### 文件 21e41f4b71Sopenharmony_ci 22e41f4b71Sopenharmony_ci| 名称 | 描述 | 23e41f4b71Sopenharmony_ci| -------- | -------- | 24e41f4b71Sopenharmony_ci| [trace.h](trace_8h.md) | HiTraceMeterH模块打点接口定义,通过这些接口实现性能打点相关功能。 | 25e41f4b71Sopenharmony_ci 26e41f4b71Sopenharmony_ci 27e41f4b71Sopenharmony_ci### 结构体 28e41f4b71Sopenharmony_ci 29e41f4b71Sopenharmony_ci| 名称 | 描述 | 30e41f4b71Sopenharmony_ci| -------- | -------- | 31e41f4b71Sopenharmony_ci| struct [HiTraceId](_hi_trace_id.md) | HiTraceId定义 | 32e41f4b71Sopenharmony_ci 33e41f4b71Sopenharmony_ci 34e41f4b71Sopenharmony_ci### 类型定义 35e41f4b71Sopenharmony_ci 36e41f4b71Sopenharmony_ci| 名称 | 描述 | 37e41f4b71Sopenharmony_ci| -------- | -------- | 38e41f4b71Sopenharmony_ci| typedef enum [HiTraceId_Valid](#hitraceid_valid) [HiTraceId_Valid](#hitraceid_valid) | HiTraceId是否有效标志 | 39e41f4b71Sopenharmony_ci| typedef enum [HiTrace_Version](#hitrace_version) [HiTrace_Version](#hitrace_version) | HiTrace版本号 | 40e41f4b71Sopenharmony_ci| typedef enum [HiTrace_Flag](#hitrace_flag) [HiTrace_Flag](#hitrace_flag) | HiTrace标志位 | 41e41f4b71Sopenharmony_ci| typedef enum [HiTrace_Tracepoint_Type](#hitrace_tracepoint_type) [HiTrace_Tracepoint_Type](#hitrace_tracepoint_type) | HiTrace打点类型 | 42e41f4b71Sopenharmony_ci| typedef enum [HiTrace_Communication_Mode](#hitrace_communication_mode) [HiTrace_Communication_Mode](#hitrace_communication_mode) | HiTrace通信模式枚举 | 43e41f4b71Sopenharmony_ci| typedef struct [HiTraceId](_hi_trace_id.md) HiTraceId | HiTraceId定义 | 44e41f4b71Sopenharmony_ci 45e41f4b71Sopenharmony_ci 46e41f4b71Sopenharmony_ci### 枚举 47e41f4b71Sopenharmony_ci 48e41f4b71Sopenharmony_ci| 名称 | 描述 | 49e41f4b71Sopenharmony_ci| -------- | -------- | 50e41f4b71Sopenharmony_ci| [HiTraceId_Valid](#hitraceid_valid) { HITRACE_ID_INVALID = 0, HITRACE_ID_VALID = 1 } | HiTraceId是否有效标志 | 51e41f4b71Sopenharmony_ci| [HiTrace_Version](#hitrace_version) { HITRACE_VER_1 = 0 } | HiTrace版本号 | 52e41f4b71Sopenharmony_ci| [HiTrace_Flag](#hitrace_flag) {<br/>HITRACE_FLAG_DEFAULT = 0, HITRACE_FLAG_INCLUDE_ASYNC = 1 << 0, HITRACE_FLAG_DONOT_CREATE_SPAN = 1 << 1, HITRACE_FLAG_TP_INFO = 1 << 2,<br/>HITRACE_FLAG_NO_BE_INFO = 1 << 3, HITRACE_FLAG_DONOT_ENABLE_LOG = 1 << 4, HITRACE_FLAG_FAULT_TRIGGER = 1 << 5, HITRACE_FLAG_D2D_TP_INFO = 1 << 6<br/>} | HiTrace标志位 | 53e41f4b71Sopenharmony_ci| [HiTrace_Tracepoint_Type](#hitrace_tracepoint_type) {<br/>HITRACE_TP_CS = 0, HITRACE_TP_CR = 1, HITRACE_TP_SS = 2, HITRACE_TP_SR = 3,<br/>HITRACE_TP_GENERAL = 4<br/>} | HiTrace打点类型 | 54e41f4b71Sopenharmony_ci| [HiTrace_Communication_Mode](#hitrace_communication_mode) { HITRACE_CM_DEFAULT = 0, HITRACE_CM_THREAD = 1, HITRACE_CM_PROCESS = 2, HITRACE_CM_DEVICE = 3 } | HiTrace通信模式枚举 | 55e41f4b71Sopenharmony_ci 56e41f4b71Sopenharmony_ci 57e41f4b71Sopenharmony_ci### 函数 58e41f4b71Sopenharmony_ci 59e41f4b71Sopenharmony_ci| 名称 | 描述 | 60e41f4b71Sopenharmony_ci| -------- | -------- | 61e41f4b71Sopenharmony_ci| [HiTraceId](_hi_trace_id.md) [OH_HiTrace_BeginChain](#oh_hitrace_beginchain) (const char \*name, int flags) | 开始跟踪进程实现。 | 62e41f4b71Sopenharmony_ci| void [OH_HiTrace_EndChain](#oh_hitrace_endchain) () | 如果给定的跟踪ID有效,则停止进程跟踪并清除当前线程的跟踪ID,否则不执行任何操作。 | 63e41f4b71Sopenharmony_ci| [HiTraceId](_hi_trace_id.md) [OH_HiTrace_GetId](#oh_hitrace_getid) () | 获取当前线程的跟踪ID,如果没有属于当前线程的跟踪ID,则返回一个无效的跟踪ID | 64e41f4b71Sopenharmony_ci| void [OH_HiTrace_SetId](#oh_hitrace_setid) (const [HiTraceId](_hi_trace_id.md) \*id) | 将id设置为当前线程的跟踪id。如果ID无效,则不执行任何操作。 | 65e41f4b71Sopenharmony_ci| void [OH_HiTrace_ClearId](#oh_hitrace_clearid) (void) | 清除当前线程的跟踪ID并将其设置为无效。 | 66e41f4b71Sopenharmony_ci| [HiTraceId](_hi_trace_id.md) [OH_HiTrace_CreateSpan](#oh_hitrace_createspan) (void) | 根据当前线程的跟踪id创建一个新的span id。 | 67e41f4b71Sopenharmony_ci| void [OH_HiTrace_Tracepoint](#oh_hitrace_tracepoint) ([HiTrace_Communication_Mode](#hitrace_communication_mode) mode, [HiTrace_Tracepoint_Type](#hitrace_tracepoint_type) type, const [HiTraceId](_hi_trace_id.md) \*id, const char \*fmt,...) | 打印hitrace信息,包括跟踪ID信息。 | 68e41f4b71Sopenharmony_ci| void [OH_HiTrace_InitId](#oh_hitrace_initid) ([HiTraceId](_hi_trace_id.md) \*id) | 初始化HiTraceId结构体。 | 69e41f4b71Sopenharmony_ci| void [OH_HiTrace_IdFromBytes](#oh_hitrace_idfrombytes) ([HiTraceId](_hi_trace_id.md) \*id, const uint8_t \*pIdArray, int len) | 根据字节数组创建跟踪HiTraceId结构体。 | 70e41f4b71Sopenharmony_ci| bool [OH_HiTrace_IsIdValid](#oh_hitrace_isidvalid) (const [HiTraceId](_hi_trace_id.md) \*id) | 判断trace id是否有效。 | 71e41f4b71Sopenharmony_ci| bool [OH_HiTrace_IsFlagEnabled](#oh_hitrace_isflagenabled) (const [HiTraceId](_hi_trace_id.md) \*id, [HiTrace_Flag](#hitrace_flag) flag) | 判断跟踪id是否启用了跟踪标志。 | 72e41f4b71Sopenharmony_ci| void [OH_HiTrace_EnableFlag](#oh_hitrace_enableflag) (const [HiTraceId](_hi_trace_id.md) \*id, [HiTrace_Flag](#hitrace_flag) flag) | 启用跟踪ID的指定跟踪标志。 | 73e41f4b71Sopenharmony_ci| int [OH_HiTrace_GetFlags](#oh_hitrace_getflags) (const [HiTraceId](_hi_trace_id.md) \*id) | 获取HiTraceId结构体中设置的标志位。 | 74e41f4b71Sopenharmony_ci| void [OH_HiTrace_SetFlags](#oh_hitrace_setflags) ([HiTraceId](_hi_trace_id.md) \*id, int flags) | 设置跟踪标志位到HiTraceId结构体中。 | 75e41f4b71Sopenharmony_ci| uint64_t [OH_HiTrace_GetChainId](#oh_hitrace_getchainid) (const [HiTraceId](_hi_trace_id.md) \*id) | 获取跟踪链ID。 | 76e41f4b71Sopenharmony_ci| void [OH_HiTrace_SetChainId](#oh_hitrace_setchainid) ([HiTraceId](_hi_trace_id.md) \*id, uint64_t chainId) | 设置跟踪链ID到HiTraceId结构体中。 | 77e41f4b71Sopenharmony_ci| uint64_t [OH_HiTrace_GetSpanId](#oh_hitrace_getspanid) (const [HiTraceId](_hi_trace_id.md) \*id) | 获取当前HiTraceId结构体中的分支ID。 | 78e41f4b71Sopenharmony_ci| void [OH_HiTrace_SetSpanId](#oh_hitrace_setspanid) ([HiTraceId](_hi_trace_id.md) \*id, uint64_t spanId) | 设置分支ID到HiTraceId结构体中。 | 79e41f4b71Sopenharmony_ci| uint64_t [OH_HiTrace_GetParentSpanId](#oh_hitrace_getparentspanid) (const [HiTraceId](_hi_trace_id.md) \*id) | 获取当前HiTraceId结构体中的父分支ID。 | 80e41f4b71Sopenharmony_ci| void [OH_HiTrace_SetParentSpanId](#oh_hitrace_setparentspanid) ([HiTraceId](_hi_trace_id.md) \*id, uint64_t parentSpanId) | 设置HiTraceId结构的parentSpanId字符。 | 81e41f4b71Sopenharmony_ci| int [OH_HiTrace_IdToBytes](#oh_hitrace_idtobytes) (const [HiTraceId](_hi_trace_id.md) \*id, uint8_t \*pIdArray, int len) | 将HiTraceId结构体转换为字节数组,用于缓存或者通信传递。 | 82e41f4b71Sopenharmony_ci| void [OH_HiTrace_StartTrace](#oh_hitrace_starttrace) (const char \*name) | 标记一个同步跟踪耗时任务的开始。 | 83e41f4b71Sopenharmony_ci| void [OH_HiTrace_FinishTrace](#oh_hitrace_finishtrace) (void) | 标记一个同步跟踪耗时任务的结束。 | 84e41f4b71Sopenharmony_ci| void [OH_HiTrace_StartAsyncTrace](#oh_hitrace_startasynctrace) (const char \*name, int32_t taskId) | 标记一个异步跟踪耗时任务的开始。 | 85e41f4b71Sopenharmony_ci| void [OH_HiTrace_FinishAsyncTrace](#oh_hitrace_finishasynctrace) (const char \*name, int32_t taskId) | 标记一个异步跟踪耗时任务的结束。 | 86e41f4b71Sopenharmony_ci| void [OH_HiTrace_CountTrace](#oh_hitrace_counttrace) (const char \*name, int64_t count) | 用于跟踪给定整数变量名和整数值。 | 87e41f4b71Sopenharmony_ci 88e41f4b71Sopenharmony_ci 89e41f4b71Sopenharmony_ci### 变量 90e41f4b71Sopenharmony_ci 91e41f4b71Sopenharmony_ci| 名称 | 描述 | 92e41f4b71Sopenharmony_ci| -------- | -------- | 93e41f4b71Sopenharmony_ci| uint64_t [HiTraceId::valid](#valid): 1 | HiTraceId是否有效 | 94e41f4b71Sopenharmony_ci| uint64_t [HiTraceId::ver](#ver): 3 | HiTraceId的版本号 | 95e41f4b71Sopenharmony_ci| uint64_t [HiTraceId::chainId](#chainid): 60 | HiTraceId的链Id | 96e41f4b71Sopenharmony_ci| uint64_t [HiTraceId::flags](#flags): 12 | HiTraceId的标志位 | 97e41f4b71Sopenharmony_ci| uint64_t [HiTraceId::spanId](#spanid): 26 | HiTraceId的当前跨度号 | 98e41f4b71Sopenharmony_ci| uint64_t [HiTraceId::parentSpanId](#parentspanid): 26 | HiTraceId的父跨度号 | 99e41f4b71Sopenharmony_ci 100e41f4b71Sopenharmony_ci 101e41f4b71Sopenharmony_ci## 类型定义说明 102e41f4b71Sopenharmony_ci 103e41f4b71Sopenharmony_ci 104e41f4b71Sopenharmony_ci### HiTrace_Communication_Mode 105e41f4b71Sopenharmony_ci 106e41f4b71Sopenharmony_ci``` 107e41f4b71Sopenharmony_citypedef enum HiTrace_Communication_Mode HiTrace_Communication_Mode 108e41f4b71Sopenharmony_ci``` 109e41f4b71Sopenharmony_ci 110e41f4b71Sopenharmony_ci**描述** 111e41f4b71Sopenharmony_ci 112e41f4b71Sopenharmony_ciHiTrace通信模式枚举 113e41f4b71Sopenharmony_ci 114e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 115e41f4b71Sopenharmony_ci 116e41f4b71Sopenharmony_ci**起始版本:** 12 117e41f4b71Sopenharmony_ci 118e41f4b71Sopenharmony_ci 119e41f4b71Sopenharmony_ci### HiTrace_Flag 120e41f4b71Sopenharmony_ci 121e41f4b71Sopenharmony_ci``` 122e41f4b71Sopenharmony_citypedef enum HiTrace_Flag HiTrace_Flag 123e41f4b71Sopenharmony_ci``` 124e41f4b71Sopenharmony_ci 125e41f4b71Sopenharmony_ci**描述** 126e41f4b71Sopenharmony_ci 127e41f4b71Sopenharmony_ciHiTrace标志位 128e41f4b71Sopenharmony_ci 129e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 130e41f4b71Sopenharmony_ci 131e41f4b71Sopenharmony_ci**起始版本:** 12 132e41f4b71Sopenharmony_ci 133e41f4b71Sopenharmony_ci 134e41f4b71Sopenharmony_ci### HiTrace_Tracepoint_Type 135e41f4b71Sopenharmony_ci 136e41f4b71Sopenharmony_ci``` 137e41f4b71Sopenharmony_citypedef enum HiTrace_Tracepoint_Type HiTrace_Tracepoint_Type 138e41f4b71Sopenharmony_ci``` 139e41f4b71Sopenharmony_ci 140e41f4b71Sopenharmony_ci**描述** 141e41f4b71Sopenharmony_ci 142e41f4b71Sopenharmony_ciHiTrace打点类型 143e41f4b71Sopenharmony_ci 144e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 145e41f4b71Sopenharmony_ci 146e41f4b71Sopenharmony_ci**起始版本:** 12 147e41f4b71Sopenharmony_ci 148e41f4b71Sopenharmony_ci 149e41f4b71Sopenharmony_ci### HiTrace_Version 150e41f4b71Sopenharmony_ci 151e41f4b71Sopenharmony_ci``` 152e41f4b71Sopenharmony_citypedef enum HiTrace_Version HiTrace_Version 153e41f4b71Sopenharmony_ci``` 154e41f4b71Sopenharmony_ci 155e41f4b71Sopenharmony_ci**描述** 156e41f4b71Sopenharmony_ci 157e41f4b71Sopenharmony_ciHiTrace版本号 158e41f4b71Sopenharmony_ci 159e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 160e41f4b71Sopenharmony_ci 161e41f4b71Sopenharmony_ci**起始版本:** 12 162e41f4b71Sopenharmony_ci 163e41f4b71Sopenharmony_ci 164e41f4b71Sopenharmony_ci### HiTraceId_Valid 165e41f4b71Sopenharmony_ci 166e41f4b71Sopenharmony_ci``` 167e41f4b71Sopenharmony_citypedef enum HiTraceId_Valid HiTraceId_Valid 168e41f4b71Sopenharmony_ci``` 169e41f4b71Sopenharmony_ci 170e41f4b71Sopenharmony_ci**描述** 171e41f4b71Sopenharmony_ci 172e41f4b71Sopenharmony_ciHiTraceId是否有效标志 173e41f4b71Sopenharmony_ci 174e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 175e41f4b71Sopenharmony_ci 176e41f4b71Sopenharmony_ci**起始版本:** 12 177e41f4b71Sopenharmony_ci 178e41f4b71Sopenharmony_ci 179e41f4b71Sopenharmony_ci## 枚举类型说明 180e41f4b71Sopenharmony_ci 181e41f4b71Sopenharmony_ci 182e41f4b71Sopenharmony_ci### HiTrace_Communication_Mode 183e41f4b71Sopenharmony_ci 184e41f4b71Sopenharmony_ci``` 185e41f4b71Sopenharmony_cienum HiTrace_Communication_Mode 186e41f4b71Sopenharmony_ci``` 187e41f4b71Sopenharmony_ci 188e41f4b71Sopenharmony_ci**描述** 189e41f4b71Sopenharmony_ci 190e41f4b71Sopenharmony_ciHiTrace通信模式枚举 191e41f4b71Sopenharmony_ci 192e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 193e41f4b71Sopenharmony_ci 194e41f4b71Sopenharmony_ci**起始版本:** 12 195e41f4b71Sopenharmony_ci 196e41f4b71Sopenharmony_ci| 枚举值 | 描述 | 197e41f4b71Sopenharmony_ci| -------- | -------- | 198e41f4b71Sopenharmony_ci| HITRACE_CM_DEFAULT | 未指明<br/>SysCap:<br/>SystemCapability.HiviewDFX.HiTrace | 199e41f4b71Sopenharmony_ci| HITRACE_CM_THREAD | 线程间通信<br/>SysCap:<br/>SystemCapability.HiviewDFX.HiTrace | 200e41f4b71Sopenharmony_ci| HITRACE_CM_PROCESS | 进程间通信<br/>SysCap:<br/>SystemCapability.HiviewDFX.HiTrace | 201e41f4b71Sopenharmony_ci| HITRACE_CM_DEVICE | 设备间通信<br/>SysCap:<br/>SystemCapability.HiviewDFX.HiTrace | 202e41f4b71Sopenharmony_ci 203e41f4b71Sopenharmony_ci 204e41f4b71Sopenharmony_ci### HiTrace_Flag 205e41f4b71Sopenharmony_ci 206e41f4b71Sopenharmony_ci``` 207e41f4b71Sopenharmony_cienum HiTrace_Flag 208e41f4b71Sopenharmony_ci``` 209e41f4b71Sopenharmony_ci 210e41f4b71Sopenharmony_ci**描述** 211e41f4b71Sopenharmony_ci 212e41f4b71Sopenharmony_ciHiTrace标志位 213e41f4b71Sopenharmony_ci 214e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 215e41f4b71Sopenharmony_ci 216e41f4b71Sopenharmony_ci**起始版本:** 12 217e41f4b71Sopenharmony_ci 218e41f4b71Sopenharmony_ci| 枚举值 | 描述 | 219e41f4b71Sopenharmony_ci| -------- | -------- | 220e41f4b71Sopenharmony_ci| HITRACE_FLAG_DEFAULT | 默认值<br/>SysCap:<br/>SystemCapability.HiviewDFX.HiTrace | 221e41f4b71Sopenharmony_ci| HITRACE_FLAG_INCLUDE_ASYNC | 跟踪同步和异步调用。默认:仅跟踪同步调用。<br/>SysCap:<br/>SystemCapability.HiviewDFX.HiTrace | 222e41f4b71Sopenharmony_ci| HITRACE_FLAG_DONOT_CREATE_SPAN | 不创建child span。默认创建。<br/>SysCap:<br/>SystemCapability.HiviewDFX.HiTrace | 223e41f4b71Sopenharmony_ci| HITRACE_FLAG_TP_INFO | 在span中输出跟踪点信息,默认不输出跟踪点信息。<br/>SysCap:<br/>SystemCapability.HiviewDFX.HiTrace | 224e41f4b71Sopenharmony_ci| HITRACE_FLAG_NO_BE_INFO | 不输出开始和结束信息,默认输出开始和结束信息。<br/>SysCap:<br/>SystemCapability.HiviewDFX.HiTrace | 225e41f4b71Sopenharmony_ci| HITRACE_FLAG_DONOT_ENABLE_LOG | 不添加id到日志中,默认添加id到日志中。<br/>SysCap:<br/>SystemCapability.HiviewDFX.HiTrace | 226e41f4b71Sopenharmony_ci| HITRACE_FLAG_FAULT_TRIGGER | 跟踪是由故障触发的。<br/>SysCap:<br/>SystemCapability.HiviewDFX.HiTrace | 227e41f4b71Sopenharmony_ci| HITRACE_FLAG_D2D_TP_INFO | 仅输出span中的设备到设备跟踪点信息。默认值:不输出设备到设备跟踪点信息。<br/>SysCap:<br/>SystemCapability.HiviewDFX.HiTrace | 228e41f4b71Sopenharmony_ci 229e41f4b71Sopenharmony_ci 230e41f4b71Sopenharmony_ci### HiTrace_Tracepoint_Type 231e41f4b71Sopenharmony_ci 232e41f4b71Sopenharmony_ci``` 233e41f4b71Sopenharmony_cienum HiTrace_Tracepoint_Type 234e41f4b71Sopenharmony_ci``` 235e41f4b71Sopenharmony_ci 236e41f4b71Sopenharmony_ci**描述** 237e41f4b71Sopenharmony_ci 238e41f4b71Sopenharmony_ciHiTrace打点类型 239e41f4b71Sopenharmony_ci 240e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 241e41f4b71Sopenharmony_ci 242e41f4b71Sopenharmony_ci**起始版本:** 12 243e41f4b71Sopenharmony_ci 244e41f4b71Sopenharmony_ci| 枚举值 | 描述 | 245e41f4b71Sopenharmony_ci| -------- | -------- | 246e41f4b71Sopenharmony_ci| HITRACE_TP_CS | 客户端发送<br/>SysCap:<br/>SystemCapability.HiviewDFX.HiTrace | 247e41f4b71Sopenharmony_ci| HITRACE_TP_CR | 客户端接收<br/>SysCap:<br/>SystemCapability.HiviewDFX.HiTrace | 248e41f4b71Sopenharmony_ci| HITRACE_TP_SS | 服务端发送<br/>SysCap:<br/>SystemCapability.HiviewDFX.HiTrace | 249e41f4b71Sopenharmony_ci| HITRACE_TP_SR | 服务端接收<br/>SysCap:<br/>SystemCapability.HiviewDFX.HiTrace | 250e41f4b71Sopenharmony_ci| HITRACE_TP_GENERAL | 整体信息<br/>SysCap:<br/>SystemCapability.HiviewDFX.HiTrace | 251e41f4b71Sopenharmony_ci 252e41f4b71Sopenharmony_ci 253e41f4b71Sopenharmony_ci### HiTrace_Version 254e41f4b71Sopenharmony_ci 255e41f4b71Sopenharmony_ci``` 256e41f4b71Sopenharmony_cienum HiTrace_Version 257e41f4b71Sopenharmony_ci``` 258e41f4b71Sopenharmony_ci 259e41f4b71Sopenharmony_ci**描述** 260e41f4b71Sopenharmony_ci 261e41f4b71Sopenharmony_ciHiTrace版本号 262e41f4b71Sopenharmony_ci 263e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 264e41f4b71Sopenharmony_ci 265e41f4b71Sopenharmony_ci**起始版本:** 12 266e41f4b71Sopenharmony_ci 267e41f4b71Sopenharmony_ci| 枚举值 | 描述 | 268e41f4b71Sopenharmony_ci| -------- | -------- | 269e41f4b71Sopenharmony_ci| HITRACE_VER_1 | 版本1<br/>SysCap:<br/>SystemCapability.HiviewDFX.HiTrace | 270e41f4b71Sopenharmony_ci 271e41f4b71Sopenharmony_ci 272e41f4b71Sopenharmony_ci### HiTraceId_Valid 273e41f4b71Sopenharmony_ci 274e41f4b71Sopenharmony_ci``` 275e41f4b71Sopenharmony_cienum HiTraceId_Valid 276e41f4b71Sopenharmony_ci``` 277e41f4b71Sopenharmony_ci 278e41f4b71Sopenharmony_ci**描述** 279e41f4b71Sopenharmony_ci 280e41f4b71Sopenharmony_ciHiTraceId是否有效标志 281e41f4b71Sopenharmony_ci 282e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 283e41f4b71Sopenharmony_ci 284e41f4b71Sopenharmony_ci**起始版本:** 12 285e41f4b71Sopenharmony_ci 286e41f4b71Sopenharmony_ci| 枚举值 | 描述 | 287e41f4b71Sopenharmony_ci| -------- | -------- | 288e41f4b71Sopenharmony_ci| HITRACE_ID_INVALID | 无效HiTraceId<br/>SysCap:<br/>SystemCapability.HiviewDFX.HiTrace | 289e41f4b71Sopenharmony_ci| HITRACE_ID_VALID | 有效HiTraceId<br/>SysCap:<br/>SystemCapability.HiviewDFX.HiTrace | 290e41f4b71Sopenharmony_ci 291e41f4b71Sopenharmony_ci 292e41f4b71Sopenharmony_ci## 函数说明 293e41f4b71Sopenharmony_ci 294e41f4b71Sopenharmony_ci 295e41f4b71Sopenharmony_ci### OH_HiTrace_BeginChain() 296e41f4b71Sopenharmony_ci 297e41f4b71Sopenharmony_ci``` 298e41f4b71Sopenharmony_ciHiTraceId OH_HiTrace_BeginChain (const char * name, int flags ) 299e41f4b71Sopenharmony_ci``` 300e41f4b71Sopenharmony_ci 301e41f4b71Sopenharmony_ci**描述** 302e41f4b71Sopenharmony_ci 303e41f4b71Sopenharmony_ci开始跟踪进程实现。 304e41f4b71Sopenharmony_ci 305e41f4b71Sopenharmony_ci启动跟踪;生成HiTraceId结构体并设置到当前线程TLS中。第一次调用有效,否则无效。 306e41f4b71Sopenharmony_ci 307e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 308e41f4b71Sopenharmony_ci 309e41f4b71Sopenharmony_ci**起始版本:** 12 310e41f4b71Sopenharmony_ci 311e41f4b71Sopenharmony_ci**参数:** 312e41f4b71Sopenharmony_ci 313e41f4b71Sopenharmony_ci| 名称 | 描述 | 314e41f4b71Sopenharmony_ci| -------- | -------- | 315e41f4b71Sopenharmony_ci| name | 跟踪业务名 | 316e41f4b71Sopenharmony_ci| flags | 跟踪功能标志,见[HiTrace_Flag](#hitrace_flag)。 | 317e41f4b71Sopenharmony_ci 318e41f4b71Sopenharmony_ci**返回:** 319e41f4b71Sopenharmony_ci 320e41f4b71Sopenharmony_ci生成的HitraceId,见[HiTraceId](_hi_trace_id.md)。 321e41f4b71Sopenharmony_ci 322e41f4b71Sopenharmony_ci 323e41f4b71Sopenharmony_ci### OH_HiTrace_ClearId() 324e41f4b71Sopenharmony_ci 325e41f4b71Sopenharmony_ci``` 326e41f4b71Sopenharmony_civoid OH_HiTrace_ClearId (void ) 327e41f4b71Sopenharmony_ci``` 328e41f4b71Sopenharmony_ci 329e41f4b71Sopenharmony_ci**描述** 330e41f4b71Sopenharmony_ci 331e41f4b71Sopenharmony_ci清除当前线程的跟踪ID并将其设置为无效。 332e41f4b71Sopenharmony_ci 333e41f4b71Sopenharmony_ci清除当前线程TLS中的HiTraceId结构体。 334e41f4b71Sopenharmony_ci 335e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 336e41f4b71Sopenharmony_ci 337e41f4b71Sopenharmony_ci**起始版本:** 12 338e41f4b71Sopenharmony_ci 339e41f4b71Sopenharmony_ci 340e41f4b71Sopenharmony_ci### OH_HiTrace_CountTrace() 341e41f4b71Sopenharmony_ci 342e41f4b71Sopenharmony_ci``` 343e41f4b71Sopenharmony_civoid OH_HiTrace_CountTrace (const char * name, int64_t count ) 344e41f4b71Sopenharmony_ci``` 345e41f4b71Sopenharmony_ci 346e41f4b71Sopenharmony_ci**描述** 347e41f4b71Sopenharmony_ci 348e41f4b71Sopenharmony_ci用于跟踪给定整数变量名和整数值。 349e41f4b71Sopenharmony_ci 350e41f4b71Sopenharmony_ci多次执行该接口可以跟踪给定整数变量在不同时刻的数值变化。 351e41f4b71Sopenharmony_ci 352e41f4b71Sopenharmony_ci**起始版本:** 10 353e41f4b71Sopenharmony_ci 354e41f4b71Sopenharmony_ci**参数:** 355e41f4b71Sopenharmony_ci 356e41f4b71Sopenharmony_ci| 名称 | 描述 | 357e41f4b71Sopenharmony_ci| -------- | -------- | 358e41f4b71Sopenharmony_ci| name | 整数变量跟踪的名字,不必与真实变量名相同。 | 359e41f4b71Sopenharmony_ci| count | 整数数值,一般可以传入整数变量。 | 360e41f4b71Sopenharmony_ci 361e41f4b71Sopenharmony_ci 362e41f4b71Sopenharmony_ci### OH_HiTrace_CreateSpan() 363e41f4b71Sopenharmony_ci 364e41f4b71Sopenharmony_ci``` 365e41f4b71Sopenharmony_ciHiTraceId OH_HiTrace_CreateSpan (void ) 366e41f4b71Sopenharmony_ci``` 367e41f4b71Sopenharmony_ci 368e41f4b71Sopenharmony_ci**描述** 369e41f4b71Sopenharmony_ci 370e41f4b71Sopenharmony_ci根据当前线程的跟踪id创建一个新的span id。 371e41f4b71Sopenharmony_ci 372e41f4b71Sopenharmony_ci根据当前线程TLS中的HiTraceId结构体,生成新的子分支以及对应的新HiTraceI结构体。 373e41f4b71Sopenharmony_ci 374e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 375e41f4b71Sopenharmony_ci 376e41f4b71Sopenharmony_ci**起始版本:** 12 377e41f4b71Sopenharmony_ci 378e41f4b71Sopenharmony_ci**返回:** 379e41f4b71Sopenharmony_ci 380e41f4b71Sopenharmony_ci有效的跨度跟踪ID,见[HiTraceId](_hi_trace_id.md)。否则,如果不允许创建跨度,则跟踪当前线程的ID。 381e41f4b71Sopenharmony_ci 382e41f4b71Sopenharmony_ci 383e41f4b71Sopenharmony_ci### OH_HiTrace_EnableFlag() 384e41f4b71Sopenharmony_ci 385e41f4b71Sopenharmony_ci``` 386e41f4b71Sopenharmony_civoid OH_HiTrace_EnableFlag (const HiTraceId * id, HiTrace_Flag flag ) 387e41f4b71Sopenharmony_ci``` 388e41f4b71Sopenharmony_ci 389e41f4b71Sopenharmony_ci**描述** 390e41f4b71Sopenharmony_ci 391e41f4b71Sopenharmony_ci启用跟踪ID的指定跟踪标志。 392e41f4b71Sopenharmony_ci 393e41f4b71Sopenharmony_ci设置某跟踪标志位到HiTraceId结构体中。 394e41f4b71Sopenharmony_ci 395e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 396e41f4b71Sopenharmony_ci 397e41f4b71Sopenharmony_ci**起始版本:** 12 398e41f4b71Sopenharmony_ci 399e41f4b71Sopenharmony_ci**参数:** 400e41f4b71Sopenharmony_ci 401e41f4b71Sopenharmony_ci| 名称 | 描述 | 402e41f4b71Sopenharmony_ci| -------- | -------- | 403e41f4b71Sopenharmony_ci| id | 需要启用标志的跟踪ID,见[HiTraceId](_hi_trace_id.md)。 | 404e41f4b71Sopenharmony_ci| flag | 跟踪ID中需要启用的指定跟踪标志,见[HiTrace_Flag](#hitrace_flag)。 | 405e41f4b71Sopenharmony_ci 406e41f4b71Sopenharmony_ci 407e41f4b71Sopenharmony_ci### OH_HiTrace_EndChain() 408e41f4b71Sopenharmony_ci 409e41f4b71Sopenharmony_ci``` 410e41f4b71Sopenharmony_civoid OH_HiTrace_EndChain () 411e41f4b71Sopenharmony_ci``` 412e41f4b71Sopenharmony_ci 413e41f4b71Sopenharmony_ci**描述** 414e41f4b71Sopenharmony_ci 415e41f4b71Sopenharmony_ci如果给定的跟踪ID有效,则停止进程跟踪并清除当前线程的跟踪ID,否则不执行任何操作。 416e41f4b71Sopenharmony_ci 417e41f4b71Sopenharmony_ci停止跟踪;清除当前线程TLS中HiTraceId内容。 418e41f4b71Sopenharmony_ci 419e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 420e41f4b71Sopenharmony_ci 421e41f4b71Sopenharmony_ci**起始版本:** 12 422e41f4b71Sopenharmony_ci 423e41f4b71Sopenharmony_ci 424e41f4b71Sopenharmony_ci### OH_HiTrace_FinishAsyncTrace() 425e41f4b71Sopenharmony_ci 426e41f4b71Sopenharmony_ci``` 427e41f4b71Sopenharmony_civoid OH_HiTrace_FinishAsyncTrace (const char * name, int32_t taskId ) 428e41f4b71Sopenharmony_ci``` 429e41f4b71Sopenharmony_ci 430e41f4b71Sopenharmony_ci**描述** 431e41f4b71Sopenharmony_ci 432e41f4b71Sopenharmony_ci标记一个异步跟踪耗时任务的结束。 433e41f4b71Sopenharmony_ci 434e41f4b71Sopenharmony_ci在异步操作完成后如回调函数中调用,进行结束打点。 和OH_HiTrace_StartAsyncTrace配对使用,参数name和taskId必须与异步跟踪的开始打点接口OH_HiTrace_StartAsyncTrace的对应参数值一致。 435e41f4b71Sopenharmony_ci 436e41f4b71Sopenharmony_ci**起始版本:** 10 437e41f4b71Sopenharmony_ci 438e41f4b71Sopenharmony_ci**参数:** 439e41f4b71Sopenharmony_ci 440e41f4b71Sopenharmony_ci| 名称 | 描述 | 441e41f4b71Sopenharmony_ci| -------- | -------- | 442e41f4b71Sopenharmony_ci| name | 异步跟踪的名字。 | 443e41f4b71Sopenharmony_ci| taskId | 异步跟踪的ID。异步跟踪开始和结束由于不是顺序发生的,所以需要通过name和每次执行唯一的taskId进行开始和结束的匹配。 | 444e41f4b71Sopenharmony_ci 445e41f4b71Sopenharmony_ci 446e41f4b71Sopenharmony_ci### OH_HiTrace_FinishTrace() 447e41f4b71Sopenharmony_ci 448e41f4b71Sopenharmony_ci``` 449e41f4b71Sopenharmony_civoid OH_HiTrace_FinishTrace (void ) 450e41f4b71Sopenharmony_ci``` 451e41f4b71Sopenharmony_ci 452e41f4b71Sopenharmony_ci**描述** 453e41f4b71Sopenharmony_ci 454e41f4b71Sopenharmony_ci标记一个同步跟踪耗时任务的结束。 455e41f4b71Sopenharmony_ci 456e41f4b71Sopenharmony_ci必须和OH_HiTrace_StartTrace配对使用。跟踪数据解析时,和其前执行流程中最近的OH_HiTrace_StartTrace进行匹配。 457e41f4b71Sopenharmony_ci 458e41f4b71Sopenharmony_ci**起始版本:** 10 459e41f4b71Sopenharmony_ci 460e41f4b71Sopenharmony_ci 461e41f4b71Sopenharmony_ci### OH_HiTrace_GetChainId() 462e41f4b71Sopenharmony_ci 463e41f4b71Sopenharmony_ci``` 464e41f4b71Sopenharmony_ciuint64_t OH_HiTrace_GetChainId (const HiTraceId * id) 465e41f4b71Sopenharmony_ci``` 466e41f4b71Sopenharmony_ci 467e41f4b71Sopenharmony_ci**描述** 468e41f4b71Sopenharmony_ci 469e41f4b71Sopenharmony_ci获取跟踪链ID。 470e41f4b71Sopenharmony_ci 471e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 472e41f4b71Sopenharmony_ci 473e41f4b71Sopenharmony_ci**起始版本:** 12 474e41f4b71Sopenharmony_ci 475e41f4b71Sopenharmony_ci**参数:** 476e41f4b71Sopenharmony_ci 477e41f4b71Sopenharmony_ci| 名称 | 描述 | 478e41f4b71Sopenharmony_ci| -------- | -------- | 479e41f4b71Sopenharmony_ci| id | 需要获取跟踪链ID的HiTraceId结构体,见[HiTraceId](_hi_trace_id.md)。 | 480e41f4b71Sopenharmony_ci 481e41f4b71Sopenharmony_ci**返回:** 482e41f4b71Sopenharmony_ci 483e41f4b71Sopenharmony_ciHiTraceId结构体中设置的跟踪链ID。 484e41f4b71Sopenharmony_ci 485e41f4b71Sopenharmony_ci### OH_HiTrace_GetFlags() 486e41f4b71Sopenharmony_ci 487e41f4b71Sopenharmony_ci``` 488e41f4b71Sopenharmony_ciint OH_HiTrace_GetFlags (const HiTraceId * id) 489e41f4b71Sopenharmony_ci``` 490e41f4b71Sopenharmony_ci 491e41f4b71Sopenharmony_ci**描述** 492e41f4b71Sopenharmony_ci 493e41f4b71Sopenharmony_ci获取HiTraceId结构体中设置的标志位。 494e41f4b71Sopenharmony_ci 495e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 496e41f4b71Sopenharmony_ci 497e41f4b71Sopenharmony_ci**起始版本:** 12 498e41f4b71Sopenharmony_ci 499e41f4b71Sopenharmony_ci**参数:** 500e41f4b71Sopenharmony_ci 501e41f4b71Sopenharmony_ci| 名称 | 描述 | 502e41f4b71Sopenharmony_ci| -------- | -------- | 503e41f4b71Sopenharmony_ci| id | 需要获取标志位的HiTraceId结构体,见[HiTraceId](_hi_trace_id.md)。 | 504e41f4b71Sopenharmony_ci 505e41f4b71Sopenharmony_ci**返回:** 506e41f4b71Sopenharmony_ci 507e41f4b71Sopenharmony_ciHiTraceId结构体中设置的标志位。 508e41f4b71Sopenharmony_ci 509e41f4b71Sopenharmony_ci 510e41f4b71Sopenharmony_ci### OH_HiTrace_GetId() 511e41f4b71Sopenharmony_ci 512e41f4b71Sopenharmony_ci``` 513e41f4b71Sopenharmony_ciHiTraceId OH_HiTrace_GetId () 514e41f4b71Sopenharmony_ci``` 515e41f4b71Sopenharmony_ci**描述** 516e41f4b71Sopenharmony_ci获取当前线程的跟踪ID,如果没有属于当前线程的跟踪ID,则返回一个无效的跟踪ID。 517e41f4b71Sopenharmony_ci 518e41f4b71Sopenharmony_ci从当前线程TLS中获取跟踪标识。 519e41f4b71Sopenharmony_ci 520e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 521e41f4b71Sopenharmony_ci 522e41f4b71Sopenharmony_ci**起始版本:** 12 523e41f4b71Sopenharmony_ci 524e41f4b71Sopenharmony_ci**返回:** 525e41f4b71Sopenharmony_ci 526e41f4b71Sopenharmony_ci当前线程的[HiTraceId](_hi_trace_id.md)。如果调用线程没有HiTraceId,则返回无效的HiTraceId。 527e41f4b71Sopenharmony_ci 528e41f4b71Sopenharmony_ci 529e41f4b71Sopenharmony_ci### OH_HiTrace_GetParentSpanId() 530e41f4b71Sopenharmony_ci 531e41f4b71Sopenharmony_ci``` 532e41f4b71Sopenharmony_ciuint64_t OH_HiTrace_GetParentSpanId (const HiTraceId * id) 533e41f4b71Sopenharmony_ci``` 534e41f4b71Sopenharmony_ci 535e41f4b71Sopenharmony_ci**描述** 536e41f4b71Sopenharmony_ci 537e41f4b71Sopenharmony_ci获取当前HiTraceId结构体中的父分支ID。 538e41f4b71Sopenharmony_ci 539e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 540e41f4b71Sopenharmony_ci 541e41f4b71Sopenharmony_ci**起始版本:** 12 542e41f4b71Sopenharmony_ci 543e41f4b71Sopenharmony_ci**参数:** 544e41f4b71Sopenharmony_ci 545e41f4b71Sopenharmony_ci| 名称 | 描述 | 546e41f4b71Sopenharmony_ci| -------- | -------- | 547e41f4b71Sopenharmony_ci| id | 需要获取父分支ID的HiTraceId结构体中,见[HiTraceId](_hi_trace_id.md)。 | 548e41f4b71Sopenharmony_ci 549e41f4b71Sopenharmony_ci**返回:** 550e41f4b71Sopenharmony_ci 551e41f4b71Sopenharmony_ciHiTraceId结构体中设置的父分支ID。 552e41f4b71Sopenharmony_ci 553e41f4b71Sopenharmony_ci 554e41f4b71Sopenharmony_ci### OH_HiTrace_GetSpanId() 555e41f4b71Sopenharmony_ci 556e41f4b71Sopenharmony_ci``` 557e41f4b71Sopenharmony_ciuint64_t OH_HiTrace_GetSpanId (const HiTraceId * id) 558e41f4b71Sopenharmony_ci``` 559e41f4b71Sopenharmony_ci 560e41f4b71Sopenharmony_ci**描述** 561e41f4b71Sopenharmony_ci 562e41f4b71Sopenharmony_ci获取当前HiTraceId结构体中的分支ID。 563e41f4b71Sopenharmony_ci 564e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 565e41f4b71Sopenharmony_ci 566e41f4b71Sopenharmony_ci**起始版本:** 12 567e41f4b71Sopenharmony_ci 568e41f4b71Sopenharmony_ci**参数:** 569e41f4b71Sopenharmony_ci 570e41f4b71Sopenharmony_ci| 名称 | 描述 | 571e41f4b71Sopenharmony_ci| -------- | -------- | 572e41f4b71Sopenharmony_ci| id | 需要获取分支ID的HiTraceId结构体,见[HiTraceId](_hi_trace_id.md)。 | 573e41f4b71Sopenharmony_ci 574e41f4b71Sopenharmony_ci**返回:** 575e41f4b71Sopenharmony_ci 576e41f4b71Sopenharmony_ciHiTraceId结构体中设置的分支ID。 577e41f4b71Sopenharmony_ci 578e41f4b71Sopenharmony_ci### OH_HiTrace_IdFromBytes() 579e41f4b71Sopenharmony_ci 580e41f4b71Sopenharmony_ci``` 581e41f4b71Sopenharmony_civoid OH_HiTrace_IdFromBytes (HiTraceId * id, const uint8_t * pIdArray, int len ) 582e41f4b71Sopenharmony_ci``` 583e41f4b71Sopenharmony_ci 584e41f4b71Sopenharmony_ci**描述** 585e41f4b71Sopenharmony_ci 586e41f4b71Sopenharmony_ci根据字节数组创建跟踪HiTraceId结构体。 587e41f4b71Sopenharmony_ci 588e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 589e41f4b71Sopenharmony_ci 590e41f4b71Sopenharmony_ci**起始版本:** 12 591e41f4b71Sopenharmony_ci 592e41f4b71Sopenharmony_ci**参数:** 593e41f4b71Sopenharmony_ci 594e41f4b71Sopenharmony_ci| 名称 | 描述 | 595e41f4b71Sopenharmony_ci| -------- | -------- | 596e41f4b71Sopenharmony_ci| id | 需要创建的[HiTraceId](_hi_trace_id.md)。 | 597e41f4b71Sopenharmony_ci| pIdArray | 字节数组。 | 598e41f4b71Sopenharmony_ci| len | 字节数组长度。 | 599e41f4b71Sopenharmony_ci 600e41f4b71Sopenharmony_ci 601e41f4b71Sopenharmony_ci### OH_HiTrace_IdToBytes() 602e41f4b71Sopenharmony_ci 603e41f4b71Sopenharmony_ci``` 604e41f4b71Sopenharmony_ciint OH_HiTrace_IdToBytes (const HiTraceId * id, uint8_t * pIdArray, int len ) 605e41f4b71Sopenharmony_ci``` 606e41f4b71Sopenharmony_ci 607e41f4b71Sopenharmony_ci**描述** 608e41f4b71Sopenharmony_ci 609e41f4b71Sopenharmony_ci将HiTraceId结构体转换为字节数组,用于缓存或者通信传递。 610e41f4b71Sopenharmony_ci 611e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 612e41f4b71Sopenharmony_ci 613e41f4b71Sopenharmony_ci**起始版本:** 12 614e41f4b71Sopenharmony_ci 615e41f4b71Sopenharmony_ci**参数:** 616e41f4b71Sopenharmony_ci 617e41f4b71Sopenharmony_ci| 名称 | 描述 | 618e41f4b71Sopenharmony_ci| -------- | -------- | 619e41f4b71Sopenharmony_ci| id | 需要转换的HiTraceId,见[HiTraceId](_hi_trace_id.md)。 | 620e41f4b71Sopenharmony_ci| pIdArray | 字节数组。 | 621e41f4b71Sopenharmony_ci| len | 字节数组长度。 | 622e41f4b71Sopenharmony_ci 623e41f4b71Sopenharmony_ci**返回:** 624e41f4b71Sopenharmony_ci 625e41f4b71Sopenharmony_ci转换后的字节数组长度。 626e41f4b71Sopenharmony_ci 627e41f4b71Sopenharmony_ci### OH_HiTrace_InitId() 628e41f4b71Sopenharmony_ci 629e41f4b71Sopenharmony_ci``` 630e41f4b71Sopenharmony_civoid OH_HiTrace_InitId (HiTraceId * id) 631e41f4b71Sopenharmony_ci``` 632e41f4b71Sopenharmony_ci 633e41f4b71Sopenharmony_ci**描述** 634e41f4b71Sopenharmony_ci 635e41f4b71Sopenharmony_ci初始化HiTraceId结构体。 636e41f4b71Sopenharmony_ci 637e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 638e41f4b71Sopenharmony_ci 639e41f4b71Sopenharmony_ci**起始版本:** 12 640e41f4b71Sopenharmony_ci 641e41f4b71Sopenharmony_ci**参数:** 642e41f4b71Sopenharmony_ci 643e41f4b71Sopenharmony_ci| 名称 | 描述 | 644e41f4b71Sopenharmony_ci| -------- | -------- | 645e41f4b71Sopenharmony_ci| id | 需要初始化的[HiTraceId](_hi_trace_id.md)。 | 646e41f4b71Sopenharmony_ci 647e41f4b71Sopenharmony_ci 648e41f4b71Sopenharmony_ci### OH_HiTrace_IsFlagEnabled() 649e41f4b71Sopenharmony_ci 650e41f4b71Sopenharmony_ci``` 651e41f4b71Sopenharmony_cibool OH_HiTrace_IsFlagEnabled (const HiTraceId * id, HiTrace_Flag flag ) 652e41f4b71Sopenharmony_ci``` 653e41f4b71Sopenharmony_ci 654e41f4b71Sopenharmony_ci**描述** 655e41f4b71Sopenharmony_ci 656e41f4b71Sopenharmony_ci判断跟踪id是否启用了跟踪标志。 657e41f4b71Sopenharmony_ci 658e41f4b71Sopenharmony_ciHiTraceId结构体的某标志是否置位。 659e41f4b71Sopenharmony_ci 660e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 661e41f4b71Sopenharmony_ci 662e41f4b71Sopenharmony_ci**起始版本:** 12 663e41f4b71Sopenharmony_ci 664e41f4b71Sopenharmony_ci**参数:** 665e41f4b71Sopenharmony_ci 666e41f4b71Sopenharmony_ci| 名称 | 描述 | 667e41f4b71Sopenharmony_ci| -------- | -------- | 668e41f4b71Sopenharmony_ci| id | 需要判断的Trace id,见[HiTraceId](_hi_trace_id.md)。 | 669e41f4b71Sopenharmony_ci| flag | 需要判断的flag,见[HiTrace_Flag](#hitrace_flag)。 | 670e41f4b71Sopenharmony_ci 671e41f4b71Sopenharmony_ci**返回:** 672e41f4b71Sopenharmony_ci 673e41f4b71Sopenharmony_ci如果跟踪ID已启用标志,则为true。 674e41f4b71Sopenharmony_ci 675e41f4b71Sopenharmony_ci 676e41f4b71Sopenharmony_ci### OH_HiTrace_IsIdValid() 677e41f4b71Sopenharmony_ci 678e41f4b71Sopenharmony_ci``` 679e41f4b71Sopenharmony_cibool OH_HiTrace_IsIdValid (const HiTraceId * id) 680e41f4b71Sopenharmony_ci``` 681e41f4b71Sopenharmony_ci 682e41f4b71Sopenharmony_ci**描述** 683e41f4b71Sopenharmony_ci 684e41f4b71Sopenharmony_ci判断trace id是否有效。 685e41f4b71Sopenharmony_ci 686e41f4b71Sopenharmony_ciHiTraceId结构体是否有效。 687e41f4b71Sopenharmony_ci 688e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 689e41f4b71Sopenharmony_ci 690e41f4b71Sopenharmony_ci**起始版本:** 12 691e41f4b71Sopenharmony_ci 692e41f4b71Sopenharmony_ci**参数:** 693e41f4b71Sopenharmony_ci 694e41f4b71Sopenharmony_ci| 名称 | 描述 | 695e41f4b71Sopenharmony_ci| -------- | -------- | 696e41f4b71Sopenharmony_ci| id | 需要判断的Trace id,见[HiTraceId](_hi_trace_id.md)。 | 697e41f4b71Sopenharmony_ci 698e41f4b71Sopenharmony_ci**返回:** 699e41f4b71Sopenharmony_ci 700e41f4b71Sopenharmony_ci如果跟踪ID有效,则为True;否则为false。 701e41f4b71Sopenharmony_ci 702e41f4b71Sopenharmony_ci 703e41f4b71Sopenharmony_ci### OH_HiTrace_SetChainId() 704e41f4b71Sopenharmony_ci 705e41f4b71Sopenharmony_ci``` 706e41f4b71Sopenharmony_civoid OH_HiTrace_SetChainId (HiTraceId * id, uint64_t chainId ) 707e41f4b71Sopenharmony_ci``` 708e41f4b71Sopenharmony_ci 709e41f4b71Sopenharmony_ci**描述** 710e41f4b71Sopenharmony_ci 711e41f4b71Sopenharmony_ci设置跟踪链ID到HiTraceId结构体中。 712e41f4b71Sopenharmony_ci 713e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 714e41f4b71Sopenharmony_ci 715e41f4b71Sopenharmony_ci**起始版本:** 12 716e41f4b71Sopenharmony_ci 717e41f4b71Sopenharmony_ci**参数:** 718e41f4b71Sopenharmony_ci 719e41f4b71Sopenharmony_ci| 名称 | 描述 | 720e41f4b71Sopenharmony_ci| -------- | -------- | 721e41f4b71Sopenharmony_ci| id | 需要设置跟踪链ID的HiTraceId结构体,见[HiTraceId](_hi_trace_id.md)。 | 722e41f4b71Sopenharmony_ci| chainId | 需要设置的跟踪链ID。 | 723e41f4b71Sopenharmony_ci 724e41f4b71Sopenharmony_ci 725e41f4b71Sopenharmony_ci### OH_HiTrace_SetFlags() 726e41f4b71Sopenharmony_ci 727e41f4b71Sopenharmony_ci``` 728e41f4b71Sopenharmony_civoid OH_HiTrace_SetFlags (HiTraceId * id, int flags ) 729e41f4b71Sopenharmony_ci``` 730e41f4b71Sopenharmony_ci 731e41f4b71Sopenharmony_ci**描述** 732e41f4b71Sopenharmony_ci 733e41f4b71Sopenharmony_ci设置跟踪标志位到HiTraceId结构体中。 734e41f4b71Sopenharmony_ci 735e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 736e41f4b71Sopenharmony_ci 737e41f4b71Sopenharmony_ci**起始版本:** 12 738e41f4b71Sopenharmony_ci 739e41f4b71Sopenharmony_ci**参数:** 740e41f4b71Sopenharmony_ci 741e41f4b71Sopenharmony_ci| 名称 | 描述 | 742e41f4b71Sopenharmony_ci| -------- | -------- | 743e41f4b71Sopenharmony_ci| id | 需要设置跟踪标志位的HiTraceId结构体,见[HiTraceId](_hi_trace_id.md)。 | 744e41f4b71Sopenharmony_ci| flags | 跟踪ID中需要设置的指定跟踪标志,见[HiTrace_Flag](#hitrace_flag)。 | 745e41f4b71Sopenharmony_ci 746e41f4b71Sopenharmony_ci 747e41f4b71Sopenharmony_ci### OH_HiTrace_SetId() 748e41f4b71Sopenharmony_ci 749e41f4b71Sopenharmony_ci``` 750e41f4b71Sopenharmony_civoid OH_HiTrace_SetId (const HiTraceId * id) 751e41f4b71Sopenharmony_ci``` 752e41f4b71Sopenharmony_ci 753e41f4b71Sopenharmony_ci**描述** 754e41f4b71Sopenharmony_ci 755e41f4b71Sopenharmony_ci将id设置为当前线程的跟踪id。如果ID无效,则不执行任何操作。 756e41f4b71Sopenharmony_ci 757e41f4b71Sopenharmony_ci设置HiTraceId结构体内容到当前线程TLS中。 758e41f4b71Sopenharmony_ci 759e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 760e41f4b71Sopenharmony_ci 761e41f4b71Sopenharmony_ci**起始版本:** 12 762e41f4b71Sopenharmony_ci 763e41f4b71Sopenharmony_ci**参数:** 764e41f4b71Sopenharmony_ci 765e41f4b71Sopenharmony_ci| 名称 | 描述 | 766e41f4b71Sopenharmony_ci| -------- | -------- | 767e41f4b71Sopenharmony_ci| id | 将id设置为当前线程的跟踪id,见[HiTraceId](_hi_trace_id.md)。 | 768e41f4b71Sopenharmony_ci 769e41f4b71Sopenharmony_ci 770e41f4b71Sopenharmony_ci### OH_HiTrace_SetParentSpanId() 771e41f4b71Sopenharmony_ci 772e41f4b71Sopenharmony_ci``` 773e41f4b71Sopenharmony_civoid OH_HiTrace_SetParentSpanId (HiTraceId * id, uint64_t parentSpanId ) 774e41f4b71Sopenharmony_ci``` 775e41f4b71Sopenharmony_ci 776e41f4b71Sopenharmony_ci**描述** 777e41f4b71Sopenharmony_ci 778e41f4b71Sopenharmony_ci设置HiTraceId结构的parentSpanId字符。 779e41f4b71Sopenharmony_ci 780e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 781e41f4b71Sopenharmony_ci 782e41f4b71Sopenharmony_ci**起始版本:** 12 783e41f4b71Sopenharmony_ci 784e41f4b71Sopenharmony_ci**参数:** 785e41f4b71Sopenharmony_ci 786e41f4b71Sopenharmony_ci| 名称 | 描述 | 787e41f4b71Sopenharmony_ci| -------- | -------- | 788e41f4b71Sopenharmony_ci| id | 需要设置父分支ID的HiTraceId结构体中,见[HiTraceId](_hi_trace_id.md)。 | 789e41f4b71Sopenharmony_ci| parentSpanId | 需要设置的父分支ID。 | 790e41f4b71Sopenharmony_ci 791e41f4b71Sopenharmony_ci 792e41f4b71Sopenharmony_ci### OH_HiTrace_SetSpanId() 793e41f4b71Sopenharmony_ci 794e41f4b71Sopenharmony_ci``` 795e41f4b71Sopenharmony_civoid OH_HiTrace_SetSpanId (HiTraceId * id, uint64_t spanId ) 796e41f4b71Sopenharmony_ci``` 797e41f4b71Sopenharmony_ci 798e41f4b71Sopenharmony_ci**描述** 799e41f4b71Sopenharmony_ci 800e41f4b71Sopenharmony_ci设置分支ID到HiTraceId结构体中。 801e41f4b71Sopenharmony_ci 802e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 803e41f4b71Sopenharmony_ci 804e41f4b71Sopenharmony_ci**起始版本:** 12 805e41f4b71Sopenharmony_ci 806e41f4b71Sopenharmony_ci**参数:** 807e41f4b71Sopenharmony_ci 808e41f4b71Sopenharmony_ci| 名称 | 描述 | 809e41f4b71Sopenharmony_ci| -------- | -------- | 810e41f4b71Sopenharmony_ci| id | 需要设置分支ID的HiTraceId结构体。 | 811e41f4b71Sopenharmony_ci| spanId | 需要设置的分支ID。 | 812e41f4b71Sopenharmony_ci 813e41f4b71Sopenharmony_ci 814e41f4b71Sopenharmony_ci### OH_HiTrace_StartAsyncTrace() 815e41f4b71Sopenharmony_ci 816e41f4b71Sopenharmony_ci``` 817e41f4b71Sopenharmony_civoid OH_HiTrace_StartAsyncTrace (const char * name, int32_t taskId ) 818e41f4b71Sopenharmony_ci``` 819e41f4b71Sopenharmony_ci 820e41f4b71Sopenharmony_ci**描述** 821e41f4b71Sopenharmony_ci 822e41f4b71Sopenharmony_ci标记一个异步跟踪耗时任务的开始。 823e41f4b71Sopenharmony_ci 824e41f4b71Sopenharmony_ci用于在异步操作前调用进行开始打点,异步跟踪开始和结束数据由于不是顺序发生的,所以解析时需要通过一个唯一的taskId进行识别,这个taskId作为异步接口的参数传入。 和OH_HiTrace_FinishAsyncTrace配对使用,参数name和taskId相同的这两个接口调用匹配成一个异步跟踪耗时任务。 如果有多个相同name的任务需要跟踪或者对同一个任务跟踪多次,并且任务同时被执行,则每次调用startTrace的taskId不相同。 如果具有相同name的任务是串行执行的,则taskId可以相同。 825e41f4b71Sopenharmony_ci 826e41f4b71Sopenharmony_ci**起始版本:** 10 827e41f4b71Sopenharmony_ci 828e41f4b71Sopenharmony_ci**参数:** 829e41f4b71Sopenharmony_ci 830e41f4b71Sopenharmony_ci| 名称 | 描述 | 831e41f4b71Sopenharmony_ci| -------- | -------- | 832e41f4b71Sopenharmony_ci| name | 异步跟踪的名字。 | 833e41f4b71Sopenharmony_ci| taskId | 异步跟踪的ID。 异步跟踪开始和结束由于不是顺序发生的,所以需要通过name和每次执行唯一的taskId进行开始和结束的匹配。 | 834e41f4b71Sopenharmony_ci 835e41f4b71Sopenharmony_ci 836e41f4b71Sopenharmony_ci### OH_HiTrace_StartTrace() 837e41f4b71Sopenharmony_ci 838e41f4b71Sopenharmony_ci``` 839e41f4b71Sopenharmony_civoid OH_HiTrace_StartTrace (const char * name) 840e41f4b71Sopenharmony_ci``` 841e41f4b71Sopenharmony_ci 842e41f4b71Sopenharmony_ci**描述** 843e41f4b71Sopenharmony_ci 844e41f4b71Sopenharmony_ci标记一个同步跟踪耗时任务的开始。 845e41f4b71Sopenharmony_ci 846e41f4b71Sopenharmony_ci同步跟踪打点接口OH_HiTrace_StartTrace和OH_HiTrace_FinishTrace必须配对使用。 OH_HiTrace_StartTrace和OH_HiTrace_FinishTrace函数对可以以嵌套模式使用,跟踪数据解析时使用栈式数据结构进行匹配。 847e41f4b71Sopenharmony_ci 848e41f4b71Sopenharmony_ci**起始版本:** 10 849e41f4b71Sopenharmony_ci 850e41f4b71Sopenharmony_ci**参数:** 851e41f4b71Sopenharmony_ci 852e41f4b71Sopenharmony_ci| 名称 | 描述 | 853e41f4b71Sopenharmony_ci| -------- | -------- | 854e41f4b71Sopenharmony_ci| name | 跟踪的名字。 | 855e41f4b71Sopenharmony_ci 856e41f4b71Sopenharmony_ci 857e41f4b71Sopenharmony_ci### OH_HiTrace_Tracepoint() 858e41f4b71Sopenharmony_ci 859e41f4b71Sopenharmony_ci``` 860e41f4b71Sopenharmony_civoid OH_HiTrace_Tracepoint (HiTrace_Communication_Mode mode, HiTrace_Tracepoint_Type type, const HiTraceId * id, const char * fmt, ... ) 861e41f4b71Sopenharmony_ci``` 862e41f4b71Sopenharmony_ci 863e41f4b71Sopenharmony_ci**描述** 864e41f4b71Sopenharmony_ci 865e41f4b71Sopenharmony_ci打印hitrace信息,包括跟踪ID信息。 866e41f4b71Sopenharmony_ci 867e41f4b71Sopenharmony_ci输出埋点信息,包括通信方式、埋点类型、时间戳、分支等信息。 868e41f4b71Sopenharmony_ci 869e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace 870e41f4b71Sopenharmony_ci 871e41f4b71Sopenharmony_ci**起始版本:** 12 872e41f4b71Sopenharmony_ci 873e41f4b71Sopenharmony_ci**参数:** 874e41f4b71Sopenharmony_ci 875e41f4b71Sopenharmony_ci| 名称 | 描述 | 876e41f4b71Sopenharmony_ci| -------- | -------- | 877e41f4b71Sopenharmony_ci| mode | 跟踪通信模式,见[HiTrace_Communication_Mode](#hitrace_communication_mode)。 | 878e41f4b71Sopenharmony_ci| type | 跟踪信息类型,见[HiTrace_Tracepoint_Type](#hitrace_tracepoint_type)。 | 879e41f4b71Sopenharmony_ci| id | 需要打印的跟踪ID,见[HiTraceId](_hi_trace_id.md)。 | 880e41f4b71Sopenharmony_ci| fmt | 需要打印的自定义信息。 | 881e41f4b71Sopenharmony_ci 882e41f4b71Sopenharmony_ci 883e41f4b71Sopenharmony_ci## 变量说明 884e41f4b71Sopenharmony_ci 885e41f4b71Sopenharmony_ci 886e41f4b71Sopenharmony_ci### chainId 887e41f4b71Sopenharmony_ci 888e41f4b71Sopenharmony_ci``` 889e41f4b71Sopenharmony_ciuint64_t HiTraceId::chainId 890e41f4b71Sopenharmony_ci``` 891e41f4b71Sopenharmony_ci 892e41f4b71Sopenharmony_ci**描述** 893e41f4b71Sopenharmony_ci 894e41f4b71Sopenharmony_ciHiTraceId的链Id 895e41f4b71Sopenharmony_ci 896e41f4b71Sopenharmony_ci 897e41f4b71Sopenharmony_ci### flags 898e41f4b71Sopenharmony_ci 899e41f4b71Sopenharmony_ci``` 900e41f4b71Sopenharmony_ciuint64_t HiTraceId::flags 901e41f4b71Sopenharmony_ci``` 902e41f4b71Sopenharmony_ci 903e41f4b71Sopenharmony_ci**描述** 904e41f4b71Sopenharmony_ci 905e41f4b71Sopenharmony_ciHiTraceId的标志位 906e41f4b71Sopenharmony_ci 907e41f4b71Sopenharmony_ci 908e41f4b71Sopenharmony_ci### parentSpanId 909e41f4b71Sopenharmony_ci 910e41f4b71Sopenharmony_ci``` 911e41f4b71Sopenharmony_ciuint64_t HiTraceId::parentSpanId 912e41f4b71Sopenharmony_ci``` 913e41f4b71Sopenharmony_ci 914e41f4b71Sopenharmony_ci**描述** 915e41f4b71Sopenharmony_ci 916e41f4b71Sopenharmony_ciHiTraceId的父跨度号 917e41f4b71Sopenharmony_ci 918e41f4b71Sopenharmony_ci 919e41f4b71Sopenharmony_ci### spanId 920e41f4b71Sopenharmony_ci 921e41f4b71Sopenharmony_ci``` 922e41f4b71Sopenharmony_ciuint64_t HiTraceId::spanId 923e41f4b71Sopenharmony_ci``` 924e41f4b71Sopenharmony_ci 925e41f4b71Sopenharmony_ci**描述** 926e41f4b71Sopenharmony_ci 927e41f4b71Sopenharmony_ciHiTraceId的当前跨度号 928e41f4b71Sopenharmony_ci 929e41f4b71Sopenharmony_ci 930e41f4b71Sopenharmony_ci### valid 931e41f4b71Sopenharmony_ci 932e41f4b71Sopenharmony_ci``` 933e41f4b71Sopenharmony_ciuint64_t HiTraceId::valid 934e41f4b71Sopenharmony_ci``` 935e41f4b71Sopenharmony_ci 936e41f4b71Sopenharmony_ci**描述** 937e41f4b71Sopenharmony_ci 938e41f4b71Sopenharmony_ciHiTraceId是否有效 939e41f4b71Sopenharmony_ci 940e41f4b71Sopenharmony_ci 941e41f4b71Sopenharmony_ci### ver 942e41f4b71Sopenharmony_ci 943e41f4b71Sopenharmony_ci``` 944e41f4b71Sopenharmony_ciuint64_t HiTraceId::ver 945e41f4b71Sopenharmony_ci``` 946e41f4b71Sopenharmony_ci 947e41f4b71Sopenharmony_ci**描述** 948e41f4b71Sopenharmony_ci 949e41f4b71Sopenharmony_ciHiTraceId的版本号 950