# trace.h ## 概述 HiTraceMeter和HitraceChain模块打点接口定义,通过这些接口实现性能打点和分布式跟踪功能。
用户态tarce格式使用竖线字符作为分隔符,所以通过HiTraceMeter接口传递的字符串类型参数应避免包含该字符,防止trace解析异常。
用户态trace总长度限制512字符,超过的部分将会被截断。 **引用文件:** **库:** libhitrace_ndk.z.so **系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 10 **相关模块:** [Hitrace](capi-hitrace.md) ## 汇总 ### 结构体 | 名称 | typedef关键字 | 描述 | | -- | -- | -- | | [HiTraceId](capi-hitrace-hitraceid.md) | HiTraceId | HiTraceId定义。 | ### 枚举 | 名称 | typedef关键字 | 描述 | | -- | -- | -- | | [HiTraceId_Valid](#hitraceid_valid) | HiTraceId_Valid | HiTraceId是否有效标志。 | | [HiTrace_Version](#hitrace_version) | HiTrace_Version | HiTrace版本号。 | | [HiTrace_Flag](#hitrace_flag) | HiTrace_Flag | HiTrace跟踪标志。 | | [HiTrace_Tracepoint_Type](#hitrace_tracepoint_type) | HiTrace_Tracepoint_Type | 跟踪埋点类型枚举。 | | [HiTrace_Communication_Mode](#hitrace_communication_mode) | HiTrace_Communication_Mode | 跟踪通信类型枚举。 | | [HiTrace_Output_Level](#hitrace_output_level) | HiTrace_Output_Level | HiTrace输出级别。低于系统跟踪输出级别阈值的打点将不会生效。log版本阈值为HITRACE_LEVEL_INFO;nolog版本阈值为HITRACE_LEVEL_COMMERCIAL。 | ### 函数 | 名称 | 描述 | | -- | -- | | [HiTraceId OH_HiTrace_BeginChain(const char *name, int flags)](#oh_hitrace_beginchain) | 开始跟踪。
当前线程TLS(Thread Local Storage,线程本地存储)中不存在有效的HiTraceId时,生成有效的HiTraceId并设置到当前线程TLS中,返回该HiTraceId。
当前线程TLS中已存在有效的HiTraceId时,不会开始新的跟踪,返回各属性值均为0的无效HiTraceId。
| | [void OH_HiTrace_EndChain()](#oh_hitrace_endchain) | 结束跟踪。
结束跟踪并将当前线程TLS中的HiTraceId设置为无效。
| | [HiTraceId OH_HiTrace_GetId()](#oh_hitrace_getid) | 获取跟踪标识。
获取当前线程TLS中的HiTraceId。
| | [void OH_HiTrace_SetId(const HiTraceId *id)](#oh_hitrace_setid) | 设置跟踪标识。
将给定的HiTraceId设置到当前线程TLS中。若给定的HiTraceId无效,则不执行任何操作。
| | [void OH_HiTrace_ClearId(void)](#oh_hitrace_clearid) | 清除跟踪标识。
将当前线程TLS中的HiTraceId设置为无效。
| | [HiTraceId OH_HiTrace_CreateSpan(void)](#oh_hitrace_createspan) | 创建跟踪分支。
创建一个HiTraceId,使用当前线程TLS中的chainId、spanId初始化HiTraceId的chainId、parentSpanId,并为HiTraceId生成一个新的spanId,返回该HiTraceId。
| | [void OH_HiTrace_Tracepoint(HiTrace_Communication_Mode mode, HiTrace_Tracepoint_Type type, const HiTraceId *id, const char *fmt, ...)](#oh_hitrace_tracepoint) | HiTraceMeter跟踪信息埋点。
type为客户端发送CS和服务端接收SC时,进行同步HiTraceMeter开始打点;
type为客户端接收CC和服务端发送SS时,进行同步HiTraceMeter结束打点;
type为通用类型GENERAL时,不会进行HiTraceMeter打点。
type为客户端发送CS和客户端接收CC的信息埋点需配套使用;
type为服务端接收SC和服务端发送SS的信息埋点需配套使用。
否则,HiTraceMeter开始与结束打点无法正常匹配。 | | [void OH_HiTrace_InitId(HiTraceId *id)](#oh_hitrace_initid) | 初始化HiTraceId。 | | [void OH_HiTrace_IdFromBytes(HiTraceId *id, const uint8_t *pIdArray, int len)](#oh_hitrace_idfrombytes) | 根据字节数组创建HiTraceId。 | | [bool OH_HiTrace_IsIdValid(const HiTraceId *id)](#oh_hitrace_isidvalid) | 判断HiTraceId是否有效。 | | [bool OH_HiTrace_IsFlagEnabled(const HiTraceId *id, HiTrace_Flag flag)](#oh_hitrace_isflagenabled) | 判断HiTraceId是否启用了跟踪标志flag。 | | [void OH_HiTrace_EnableFlag(const HiTraceId *id, HiTrace_Flag flag)](#oh_hitrace_enableflag) | 启用HiTraceId中指定的跟踪标志。 | | [int OH_HiTrace_GetFlags(const HiTraceId *id)](#oh_hitrace_getflags) | 获取HiTraceId中设置的跟踪标志位。 | | [void OH_HiTrace_SetFlags(HiTraceId *id, int flags)](#oh_hitrace_setflags) | 设置跟踪标志位到[HiTraceId](capi-hitrace-hitraceid.md)中。 | | [uint64_t OH_HiTrace_GetChainId(const HiTraceId *id)](#oh_hitrace_getchainid) | 获取HiTraceId中的跟踪链ID。 | | [void OH_HiTrace_SetChainId(HiTraceId *id, uint64_t chainId)](#oh_hitrace_setchainid) | 设置跟踪链ID到HiTraceId中。 | | [uint64_t OH_HiTrace_GetSpanId(const HiTraceId *id)](#oh_hitrace_getspanid) | 获取当前HiTraceId中的分支ID。 | | [void OH_HiTrace_SetSpanId(HiTraceId *id, uint64_t spanId)](#oh_hitrace_setspanid) | 设置分支ID到HiTraceId中。 | | [uint64_t OH_HiTrace_GetParentSpanId(const HiTraceId *id)](#oh_hitrace_getparentspanid) | 获取当前HiTraceId中的父分支ID。 | | [void OH_HiTrace_SetParentSpanId(HiTraceId *id, uint64_t parentSpanId)](#oh_hitrace_setparentspanid) | 设置HiTraceId结构的parentSpanId字符。 | | [int OH_HiTrace_IdToBytes(const HiTraceId* id, uint8_t* pIdArray, int len)](#oh_hitrace_idtobytes) | 将HiTraceId转换为字节数组,用于缓存或者通信传递。 | | [void OH_HiTrace_StartTrace(const char *name)](#oh_hitrace_starttrace) | 标记一个同步跟踪耗时任务的开始。
同步跟踪打点接口OH_HiTrace_StartTrace()和OH_HiTrace_FinishTrace()必须配对使用。
OH_HiTrace_StartTrace()和OH_HiTrace_FinishTrace()函数对可以嵌套使用,跟踪解析时使用栈式数据结构进行匹配。
从API version 19开始,建议使用OH_HiTrace_StartTraceEx()接口,以便分级控制跟踪输出。
| | [void OH_HiTrace_FinishTrace(void)](#oh_hitrace_finishtrace) | 标记一个同步跟踪耗时任务的结束。
必须和OH_HiTrace_StartTrace()配对使用。跟踪解析时,和其前执行流程中最近的OH_HiTrace_StartTrace()进行匹配。
从API version 19开始,建议使用OH_HiTrace_FinishTraceEx()接口,以便分级控制跟踪输出。
| | [void OH_HiTrace_StartAsyncTrace(const char *name, int32_t taskId)](#oh_hitrace_startasynctrace) | 标记一个异步跟踪耗时任务的开始。
用于在异步操作前调用进行开始打点,异步跟踪开始和结束数据由于不是顺序发生的,所以解析时需要通过一个唯一的taskId进行识别。
必须和OH_HiTrace_FinishAsyncTrace()配对使用,参数name和taskId相同的开始与结束打点相匹配,构成一个异步跟踪耗时任务。
如果有多个相同name的任务需要跟踪或者对同一个任务跟踪多次,并且任务同时被执行,则每次调用的taskId需不相同。
如果具有相同name的任务是串行执行的,则taskId可以相同。
从API version 19开始,建议使用OH_HiTrace_StartAsyncTraceEx()接口,以便分级控制跟踪输出与跟踪聚类。
| | [void OH_HiTrace_FinishAsyncTrace(const char *name, int32_t taskId)](#oh_hitrace_finishasynctrace) | 标记一个异步跟踪耗时任务的结束。
在异步操作完成后如回调函数中调用,进行结束打点。
和OH_HiTrace_StartAsyncTrace()配对使用,参数name和taskId必须与异步跟踪的开始打点接口的对应参数值保持一致。
从API version 19开始,建议使用OH_HiTrace_FinishAsyncTraceEx()接口,以便分级控制跟踪输出。
| | [void OH_HiTrace_CountTrace(const char *name, int64_t count)](#oh_hitrace_counttrace) | 用于跟踪给定整数变量名和整数值。
多次执行该接口可以跟踪给定整数变量在不同时刻的数值变化。
从API version 19开始,建议使用OH_HiTrace_CountTraceEx()接口,以便分级控制跟踪输出。
| | [void OH_HiTrace_StartTraceEx(HiTrace_Output_Level level, const char *name, const char *customArgs)](#oh_hitrace_starttraceex) | 标记一个同步跟踪耗时任务的开始,分级控制跟踪输出。
同步跟踪打点接口OH_HiTrace_StartTraceEx()和OH_HiTrace_FinishTraceEx()必须配对使用。
OH_HiTrace_StartTraceEx()和OH_HiTrace_FinishTraceEx()函数对可以嵌套使用,跟踪解析时使用栈式数据结构进行匹配。
| | [void OH_HiTrace_FinishTraceEx(HiTrace_Output_Level level)](#oh_hitrace_finishtraceex) | 标记一个同步跟踪耗时任务的结束,分级控制跟踪输出。
必须和OH_HiTrace_StartTraceEx()配对使用,参数level必须与同步跟踪的开始打点接口OH_HiTrace_StartTraceEx()的对应参数值一致。
跟踪数据解析时,和其前执行流程中最近的OH_HiTrace_StartTraceEx()进行匹配。
| | [void OH_HiTrace_StartAsyncTraceEx(HiTrace_Output_Level level, const char *name, int32_t taskId, const char *customCategory, const char *customArgs)](#oh_hitrace_startasynctraceex) | 标记一个异步跟踪耗时任务的开始,分级控制跟踪输出。
用于在异步操作执行前进行开始打点,异步跟踪开始和结束数据由于不是顺序发生的,所以解析时需要通过一个唯一的taskId进行识别。
和OH_HiTrace_FinishAsyncTraceEx()配对使用,参数name和taskId相同的开始与结束打点相匹配,构成一个异步跟踪耗时任务。
如果有多个相同name的任务需要跟踪或者对同一个任务跟踪多次,并且任务同时被执行,则每次调用的taskId需不相同。
如果具有相同name的任务是串行执行的,则taskId可以相同。
不同进程的taskId不会相互干扰。
| | [void OH_HiTrace_FinishAsyncTraceEx(HiTrace_Output_Level level, const char *name, int32_t taskId)](#oh_hitrace_finishasynctraceex) | 标记一个异步跟踪耗时任务的结束,分级控制跟踪输出。
用于在异步操作完成后进行结束打点,例如在回调函数中调用。
和OH_HiTrace_StartAsyncTraceEx()配对使用,参数level、name和taskId必须与异步跟踪开始打点接口的对应参数值保持一致。
| | [void OH_HiTrace_CountTraceEx(HiTrace_Output_Level level, const char *name, int64_t count)](#oh_hitrace_counttraceex) | 标记一个跟踪的整数变量,分级控制跟踪输出。 | | [bool OH_HiTrace_IsTraceEnabled(void)](#oh_hitrace_istraceenabled) | 判断当前是否开启应用trace捕获。 | ## 枚举类型说明 ### HiTraceId_Valid ``` enum HiTraceId_Valid ``` **描述** HiTraceId是否有效标志。 **系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 | 枚举项 | 描述 | | -- | -- | | HITRACE_ID_INVALID = 0 | 无效HiTraceId。
**起始版本:** 12
**系统能力:** SystemCapability.HiviewDFX.HiTrace | | HITRACE_ID_VALID = 1 | 有效HiTraceId。
**起始版本:** 12
**系统能力:** SystemCapability.HiviewDFX.HiTrace | ### HiTrace_Version ``` enum HiTrace_Version ``` **描述** HiTrace版本号。 **系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 | 枚举项 | 描述 | | -- | -- | | HITRACE_VER_1 = 0 | 版本1。
**起始版本:** 12
**系统能力:** SystemCapability.HiviewDFX.HiTrace | ### HiTrace_Flag ``` enum HiTrace_Flag ``` **描述** HiTrace跟踪标志。 **系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 | 枚举项 | 描述 | | -- | -- | | HITRACE_FLAG_DEFAULT = 0 | 缺省标志。
**起始版本:** 12
**系统能力:** SystemCapability.HiviewDFX.HiTrace | | HITRACE_FLAG_INCLUDE_ASYNC = 1 << 0 | 异步调用标志。
设置该标志,同时跟踪同步和异步调用;缺省只跟踪同步调用。

**起始版本:** 12
**系统能力:** SystemCapability.HiviewDFX.HiTrace | | HITRACE_FLAG_DONOT_CREATE_SPAN = 1 << 1 | 无分支标志。
设置该标志,不创建分支信息;缺省创建分支信息。

**起始版本:** 12
**系统能力:** SystemCapability.HiviewDFX.HiTrace | | HITRACE_FLAG_TP_INFO = 1 << 2 | 埋点标志。
调试场景下设置该标志,调用信息埋点接口OH_HiTrace_Tracepoint()时,会打印埋点信息hilog日志;缺省不打印埋点信息hilog日志。

**起始版本:** 12
**系统能力:** SystemCapability.HiviewDFX.HiTrace | | HITRACE_FLAG_NO_BE_INFO = 1 << 3 | 无开始结束信息标志。
调试场景下设置该标志,调用开始跟踪接口OH_HiTrace_BeginChain()和结束跟踪接口OH_HiTrace_EndChain()时,分别会打印开始、结束跟踪信息hilog日志;缺省不打印开始、结束跟踪信息hilog日志。
**起始版本:** 12
**系统能力:** SystemCapability.HiviewDFX.HiTrace | | HITRACE_FLAG_DONOT_ENABLE_LOG = 1 << 4 | 日志关联标志。
设置该标志,不会在hilog日志中附加HiTraceId信息;缺省会在hilog日志中附加HiTraceId信息。

**起始版本:** 12
**系统能力:** SystemCapability.HiviewDFX.HiTrace | | HITRACE_FLAG_FAULT_TRIGGER = 1 << 5 | 故障触发标志。预置标志,暂未启用。
**起始版本:** 12
**系统能力:** SystemCapability.HiviewDFX.HiTrace | | HITRACE_FLAG_D2D_TP_INFO = 1 << 6 | 设备间埋点标志。HITRACE_FLAG_TP_INFO的一个子集,调试场景下使用。
当已设置HITRACE_FLAG_TP_INFO标志时,HITRACE_FLAG_D2D_TP_INFO标志不生效;
当未设置HITRACE_FLAG_TP_INFO标志时,设置HITRACE_FLAG_D2D_TP_INFO标志,此时调用信息埋点接口OH_HiTrace_Tracepoint(),仅当mode参数为设备间通信HITRACE_CM_DEVICE的情况下,会打印埋点信息hilog日志。

**起始版本:** 12
**系统能力:** SystemCapability.HiviewDFX.HiTrace | ### HiTrace_Tracepoint_Type ``` enum HiTrace_Tracepoint_Type ``` **描述** 跟踪埋点类型枚举。 **系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 | 枚举项 | 描述 | | -- | -- | | HITRACE_TP_CS = 0 | 客户端发送。
**起始版本:** 12
**系统能力:** SystemCapability.HiviewDFX.HiTrace | | HITRACE_TP_CR = 1 | 客户端接收。
**起始版本:** 12
**系统能力:** SystemCapability.HiviewDFX.HiTrace | | HITRACE_TP_SS = 2 | 服务端发送。
**起始版本:** 12
**系统能力:** SystemCapability.HiviewDFX.HiTrace | | HITRACE_TP_SR = 3 | 服务端接收。
**起始版本:** 12
**系统能力:** SystemCapability.HiviewDFX.HiTrace | | HITRACE_TP_GENERAL = 4 | 通用类型,标识HITRACE_TP_CS、HITRACE_TP_CR、HITRACE_TP_SS、HITRACE_TP_SR四种场景之外的埋点。
**起始版本:** 12
**系统能力:** SystemCapability.HiviewDFX.HiTrace | ### HiTrace_Communication_Mode ``` enum HiTrace_Communication_Mode ``` **描述** 跟踪通信类型枚举。 **系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 | 枚举项 | 描述 | | -- | -- | | HITRACE_CM_DEFAULT = 0 | 缺省通信类型。
**起始版本:** 12
**系统能力:** SystemCapability.HiviewDFX.HiTrace | | HITRACE_CM_THREAD = 1 | 线程间通信。
**起始版本:** 12
**系统能力:** SystemCapability.HiviewDFX.HiTrace | | HITRACE_CM_PROCESS = 2 | 进程间通信。
**起始版本:** 12
**系统能力:** SystemCapability.HiviewDFX.HiTrace | | HITRACE_CM_DEVICE = 3 | 设备间通信。
**起始版本:** 12
**系统能力:** SystemCapability.HiviewDFX.HiTrace | ### HiTrace_Output_Level ``` enum HiTrace_Output_Level ``` **描述** HiTrace输出级别。低于系统跟踪输出级别阈值的打点将不会生效。log版本阈值为HITRACE_LEVEL_INFO;nolog版本阈值为HITRACE_LEVEL_COMMERCIAL。 **系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 19 | 枚举项 | 描述 | | -- | -- | | HITRACE_LEVEL_DEBUG = 0 | 仅用于调试的输出级别,优先级最低。
**起始版本:** 19 | | HITRACE_LEVEL_INFO = 1 | 用于log版本的输出级别。
**起始版本:** 19 | | HITRACE_LEVEL_CRITICAL = 2 | 用于log版本的输出级别,优先级高于HITRACE_LEVEL_INFO。
**起始版本:** 19 | | HITRACE_LEVEL_COMMERCIAL = 3 | 用于nolog版本的输出级别,优先级最高。
**起始版本:** 19 | | HITRACE_LEVEL_MAX = HITRACE_LEVEL_COMMERCIAL | 输出级别范围限制。
**起始版本:** 19 | ## 函数说明 ### OH_HiTrace_BeginChain() ``` HiTraceId OH_HiTrace_BeginChain(const char *name, int flags) ``` **描述** 开始跟踪。
当前线程TLS(Thread Local Storage,线程本地存储)中不存在有效的HiTraceId时,生成有效的HiTraceId并设置到当前线程TLS中,返回该HiTraceId。
当前线程TLS中已存在有效的HiTraceId时,不会开始新的跟踪,返回各属性值均为0的无效HiTraceId。
**系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 **参数:** | 参数项 | 描述 | | -- | -- | | const char *name | 跟踪业务名。 | | int flags | 跟踪标志组合,见[HiTrace_Flag](capi-trace-h.md#hitrace_flag)。 | **返回:** | 类型 | 说明 | | -- | -- | | [HiTraceId](capi-hitrace-hitraceid.md) | [HiTraceId](capi-hitrace-hitraceid.md)结构体。 | ### OH_HiTrace_EndChain() ``` void OH_HiTrace_EndChain() ``` **描述** 结束跟踪。
结束跟踪并将当前线程TLS中的HiTraceId设置为无效。
**系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 ### OH_HiTrace_GetId() ``` HiTraceId OH_HiTrace_GetId() ``` **描述** 获取跟踪标识。
获取当前线程TLS中的HiTraceId。
**系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 **返回:** | 类型 | 说明 | | -- | -- | | [HiTraceId](capi-hitrace-hitraceid.md) | [HiTraceId](capi-hitrace-hitraceid.md)结构体。 | ### OH_HiTrace_SetId() ``` void OH_HiTrace_SetId(const HiTraceId *id) ``` **描述** 设置跟踪标识。
将给定的HiTraceId设置到当前线程TLS中。若给定的HiTraceId无效,则不执行任何操作。
**系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 **参数:** | 参数项 | 描述 | | -- | -- | | [const HiTraceId](capi-hitrace-hitraceid.md) *id | 要设置的[HiTraceId](capi-hitrace-hitraceid.md)。 | ### OH_HiTrace_ClearId() ``` void OH_HiTrace_ClearId(void) ``` **描述** 清除跟踪标识。
将当前线程TLS中的HiTraceId设置为无效。
**系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 ### OH_HiTrace_CreateSpan() ``` HiTraceId OH_HiTrace_CreateSpan(void) ``` **描述** 创建跟踪分支。
创建一个HiTraceId,使用当前线程TLS中的chainId、spanId初始化HiTraceId的chainId、parentSpanId,并为HiTraceId生成一个新的spanId,返回该HiTraceId。
**系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 **返回:** | 类型 | 说明 | | -- | -- | | [HiTraceId](capi-hitrace-hitraceid.md) | [HiTraceId](capi-hitrace-hitraceid.md)结构体。 | ### OH_HiTrace_Tracepoint() ``` void OH_HiTrace_Tracepoint(HiTrace_Communication_Mode mode, HiTrace_Tracepoint_Type type, const HiTraceId *id, const char *fmt, ...) ``` **描述** HiTraceMeter跟踪信息埋点。
type为客户端发送CS和服务端接收SC时,进行同步HiTraceMeter开始打点;
type为客户端接收CC和服务端发送SS时,进行同步HiTraceMeter结束打点;
type为通用类型GENERAL时,不会进行HiTraceMeter打点。
type为客户端发送CS和客户端接收CC的信息埋点需配套使用;
type为服务端接收SC和服务端发送SS的信息埋点需配套使用。
否则,HiTraceMeter开始与结束打点无法正常匹配。 **系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 **参数:** | 参数项 | 描述 | | -- | -- | | [HiTrace_Communication_Mode](capi-trace-h.md#hitrace_communication_mode) mode | 跟踪通信模式,见[HiTrace_Communication_Mode](capi-trace-h.md#hitrace_communication_mode)。 | | [HiTrace_Tracepoint_Type](capi-trace-h.md#hitrace_tracepoint_type) type | 跟踪信息类型,见[HiTrace_Tracepoint_Type](capi-trace-h.md#hitrace_tracepoint_type)。 | | [const HiTraceId](capi-hitrace-hitraceid.md) *id | 实施信息埋点操作的[HiTraceId](capi-hitrace-hitraceid.md)。 | | const char *fmt | HiTraceMeter打点操作传入的trace说明信息的格式化字符串。 | ### OH_HiTrace_InitId() ``` void OH_HiTrace_InitId(HiTraceId *id) ``` **描述** 初始化HiTraceId。 **系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 **参数:** | 参数项 | 描述 | | -- | -- | | [HiTraceId](capi-hitrace-hitraceid.md) *id | 需要初始化的[HiTraceId](capi-hitrace-hitraceid.md)。 | ### OH_HiTrace_IdFromBytes() ``` void OH_HiTrace_IdFromBytes(HiTraceId *id, const uint8_t *pIdArray, int len) ``` **描述** 根据字节数组创建HiTraceId。 **系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 **参数:** | 参数项 | 描述 | | -- | -- | | [HiTraceId](capi-hitrace-hitraceid.md) *id | 需要创建的[HiTraceId](capi-hitrace-hitraceid.md)。 | | const uint8_t *pIdArray | 字节数组。 | | int len | 字节数组长度。 | ### OH_HiTrace_IsIdValid() ``` bool OH_HiTrace_IsIdValid(const HiTraceId *id) ``` **描述** 判断HiTraceId是否有效。 **系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 **参数:** | 参数项 | 描述 | | -- | -- | | [const HiTraceId](capi-hitrace-hitraceid.md) *id | 需要判断是否有效的[HiTraceId](capi-hitrace-hitraceid.md)。 | **返回:** | 类型 | 说明 | | -- | -- | | bool | true:[HiTraceId](capi-hitrace-hitraceid.md)有效;false:[HiTraceId](capi-hitrace-hitraceid.md)无效。 | ### OH_HiTrace_IsFlagEnabled() ``` bool OH_HiTrace_IsFlagEnabled(const HiTraceId *id, HiTrace_Flag flag) ``` **描述** 判断HiTraceId是否启用了跟踪标志flag。 **系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 **参数:** | 参数项 | 描述 | | -- | -- | | [const HiTraceId](capi-hitrace-hitraceid.md) *id | 需要判断指定跟踪标志是否启用的[HiTraceId](capi-hitrace-hitraceid.md)。 | | [HiTrace_Flag](capi-trace-h.md#hitrace_flag) flag | 指定的跟踪标志,见[HiTrace_Flag](capi-trace-h.md#hitrace_flag)。 | **返回:** | 类型 | 说明 | | -- | -- | | bool | true:[HiTraceId](capi-hitrace-hitraceid.md)已启用flag;false:[HiTraceId](capi-hitrace-hitraceid.md)未启用flag。 | ### OH_HiTrace_EnableFlag() ``` void OH_HiTrace_EnableFlag(const HiTraceId *id, HiTrace_Flag flag) ``` **描述** 启用HiTraceId中指定的跟踪标志。 **系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 **参数:** | 参数项 | 描述 | | -- | -- | | [const HiTraceId](capi-hitrace-hitraceid.md) *id | 需要启用指定跟踪标志的[HiTraceId](capi-hitrace-hitraceid.md)。 | | [HiTrace_Flag](capi-trace-h.md#hitrace_flag) flag | 指定的跟踪标志,见[HiTrace_Flag](capi-trace-h.md#hitrace_flag)。 | ### OH_HiTrace_GetFlags() ``` int OH_HiTrace_GetFlags(const HiTraceId *id) ``` **描述** 获取HiTraceId中设置的跟踪标志位。 **系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 **参数:** | 参数项 | 描述 | | -- | -- | | [const HiTraceId](capi-hitrace-hitraceid.md) *id | 需要获取跟踪标志位的[HiTraceId](capi-hitrace-hitraceid.md)。 | **返回:** | 类型 | 说明 | | -- | -- | | int | [HiTraceId](capi-hitrace-hitraceid.md)中设置的跟踪标志位。 | ### OH_HiTrace_SetFlags() ``` void OH_HiTrace_SetFlags(HiTraceId *id, int flags) ``` **描述** 设置跟踪标志位到[HiTraceId](capi-hitrace-hitraceid.md)中。 **系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 **参数:** | 参数项 | 描述 | | -- | -- | | [HiTraceId](capi-hitrace-hitraceid.md) *id | 需要设置跟踪标志位的[HiTraceId](capi-hitrace-hitraceid.md)。 | | int flags | 指定的跟踪标志位,见[HiTrace_Flag](capi-trace-h.md#hitrace_flag)。 | ### OH_HiTrace_GetChainId() ``` uint64_t OH_HiTrace_GetChainId(const HiTraceId *id) ``` **描述** 获取HiTraceId中的跟踪链ID。 **系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 **参数:** | 参数项 | 描述 | | -- | -- | | [const HiTraceId](capi-hitrace-hitraceid.md) *id | 需要获取跟踪链ID的[HiTraceId](capi-hitrace-hitraceid.md)。 | **返回:** | 类型 | 说明 | | -- | -- | | uint64_t | 跟踪链ID。 | ### OH_HiTrace_SetChainId() ``` void OH_HiTrace_SetChainId(HiTraceId *id, uint64_t chainId) ``` **描述** 设置跟踪链ID到HiTraceId中。 **系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 **参数:** | 参数项 | 描述 | | -- | -- | | [HiTraceId](capi-hitrace-hitraceid.md) *id | 需要设置跟踪链ID的[HiTraceId](capi-hitrace-hitraceid.md)。 | | uint64_t chainId | 需要设置的跟踪链ID。 | ### OH_HiTrace_GetSpanId() ``` uint64_t OH_HiTrace_GetSpanId(const HiTraceId *id) ``` **描述** 获取当前HiTraceId中的分支ID。 **系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 **参数:** | 参数项 | 描述 | | -- | -- | | [const HiTraceId](capi-hitrace-hitraceid.md) *id | 需要获取分支ID的[HiTraceId](capi-hitrace-hitraceid.md)。 | **返回:** | 类型 | 说明 | | -- | -- | | uint64_t | [HiTraceId](capi-hitrace-hitraceid.md)中设置的分支ID。 | ### OH_HiTrace_SetSpanId() ``` void OH_HiTrace_SetSpanId(HiTraceId *id, uint64_t spanId) ``` **描述** 设置分支ID到HiTraceId中。 **系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 **参数:** | 参数项 | 描述 | | -- | -- | | [HiTraceId](capi-hitrace-hitraceid.md) *id | 需要设置分支ID的[HiTraceId](capi-hitrace-hitraceid.md)。 | | uint64_t spanId | 需要设置的分支ID。 | ### OH_HiTrace_GetParentSpanId() ``` uint64_t OH_HiTrace_GetParentSpanId(const HiTraceId *id) ``` **描述** 获取当前HiTraceId中的父分支ID。 **系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 **参数:** | 参数项 | 描述 | | -- | -- | | [const HiTraceId](capi-hitrace-hitraceid.md) *id | 需要获取父分支ID的[HiTraceId](capi-hitrace-hitraceid.md)。 | **返回:** | 类型 | 说明 | | -- | -- | | uint64_t | [HiTraceId](capi-hitrace-hitraceid.md)中设置的父分支ID。 | ### OH_HiTrace_SetParentSpanId() ``` void OH_HiTrace_SetParentSpanId(HiTraceId *id, uint64_t parentSpanId) ``` **描述** 设置HiTraceId结构的parentSpanId字符。 **系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 **参数:** | 参数项 | 描述 | | -- | -- | | [HiTraceId](capi-hitrace-hitraceid.md) *id | 需要设置父分支ID的[HiTraceId](capi-hitrace-hitraceid.md)。 | | uint64_t parentSpanId | 需要设置的父分支ID。 | ### OH_HiTrace_IdToBytes() ``` int OH_HiTrace_IdToBytes(const HiTraceId* id, uint8_t* pIdArray, int len) ``` **描述** 将HiTraceId转换为字节数组,用于缓存或者通信传递。 **系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 12 **参数:** | 参数项 | 描述 | | -- | -- | | [const HiTraceId](capi-hitrace-hitraceid.md)* id | 需要转换的[HiTraceId](capi-hitrace-hitraceid.md)。 | | uint8_t* pIdArray | 字节数组。 | | int len | 字节数组长度。 | **返回:** | 类型 | 说明 | | -- | -- | | int | 转换后的字节数组长度。 | ### OH_HiTrace_StartTrace() ``` void OH_HiTrace_StartTrace(const char *name) ``` **描述** 标记一个同步跟踪耗时任务的开始。
同步跟踪打点接口OH_HiTrace_StartTrace()和OH_HiTrace_FinishTrace()必须配对使用。
OH_HiTrace_StartTrace()和OH_HiTrace_FinishTrace()函数对可以嵌套使用,跟踪解析时使用栈式数据结构进行匹配。
从API version 19开始,建议使用OH_HiTrace_StartTraceEx()接口,以便分级控制跟踪输出。
**系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 10 **参数:** | 参数项 | 描述 | | -- | -- | | const char *name | 跟踪的名字。 | ### OH_HiTrace_FinishTrace() ``` void OH_HiTrace_FinishTrace(void) ``` **描述** 标记一个同步跟踪耗时任务的结束。
必须和OH_HiTrace_StartTrace()配对使用。跟踪解析时,和其前执行流程中最近的OH_HiTrace_StartTrace()进行匹配。
从API version 19开始,建议使用OH_HiTrace_FinishTraceEx()接口,以便分级控制跟踪输出。
**系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 10 ### OH_HiTrace_StartAsyncTrace() ``` void OH_HiTrace_StartAsyncTrace(const char *name, int32_t taskId) ``` **描述** 标记一个异步跟踪耗时任务的开始。
用于在异步操作前调用进行开始打点,异步跟踪开始和结束数据由于不是顺序发生的,所以解析时需要通过一个唯一的taskId进行识别。
必须和OH_HiTrace_FinishAsyncTrace()配对使用,参数name和taskId相同的开始与结束打点相匹配,构成一个异步跟踪耗时任务。
如果有多个相同name的任务需要跟踪或者对同一个任务跟踪多次,并且任务同时被执行,则每次调用的taskId需不相同。
如果具有相同name的任务是串行执行的,则taskId可以相同。
从API version 19开始,建议使用OH_HiTrace_StartAsyncTraceEx()接口,以便分级控制跟踪输出与跟踪聚类。
**系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 10 **参数:** | 参数项 | 描述 | | -- | -- | | const char *name | 异步跟踪的名字。 | | int32_t taskId | 异步跟踪的ID。 异步跟踪开始和结束由于不是顺序发生的,所以需要通过name和每次执行唯一的taskId进行开始和结束的匹配。 | ### OH_HiTrace_FinishAsyncTrace() ``` void OH_HiTrace_FinishAsyncTrace(const char *name, int32_t taskId) ``` **描述** 标记一个异步跟踪耗时任务的结束。
在异步操作完成后如回调函数中调用,进行结束打点。
和OH_HiTrace_StartAsyncTrace()配对使用,参数name和taskId必须与异步跟踪的开始打点接口的对应参数值保持一致。
从API version 19开始,建议使用OH_HiTrace_FinishAsyncTraceEx()接口,以便分级控制跟踪输出。
**系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 10 **参数:** | 参数项 | 描述 | | -- | -- | | const char *name | 异步跟踪的名字。 | | int32_t taskId | 异步跟踪的ID。异步跟踪开始和结束由于不是顺序发生的,所以需要通过name和每次执行唯一的taskId进行开始和结束的匹配。 | ### OH_HiTrace_CountTrace() ``` void OH_HiTrace_CountTrace(const char *name, int64_t count) ``` **描述** 用于跟踪给定整数变量名和整数值。
多次执行该接口可以跟踪给定整数变量在不同时刻的数值变化。
从API version 19开始,建议使用OH_HiTrace_CountTraceEx()接口,以便分级控制跟踪输出。
**系统能力:** SystemCapability.HiviewDFX.HiTrace **起始版本:** 10 **参数:** | 参数项 | 描述 | | -- | -- | | const char *name | 整数变量跟踪的名字,不必与真实变量名相同。 | | int64_t count | 整数值。 | ### OH_HiTrace_StartTraceEx() ``` void OH_HiTrace_StartTraceEx(HiTrace_Output_Level level, const char *name, const char *customArgs) ``` **描述** 标记一个同步跟踪耗时任务的开始,分级控制跟踪输出。
同步跟踪打点接口OH_HiTrace_StartTraceEx()和OH_HiTrace_FinishTraceEx()必须配对使用。
OH_HiTrace_StartTraceEx()和OH_HiTrace_FinishTraceEx()函数对可以嵌套使用,跟踪解析时使用栈式数据结构进行匹配。
**起始版本:** 19 **参数:** | 参数项 | 描述 | | -- | -- | | [HiTrace_Output_Level](capi-trace-h.md#hitrace_output_level) level | 跟踪输出优先级。 | | const char *name | 同步跟踪的名字。 | | const char *customArgs | 键值对,多个键值对使用逗号分隔,例"key1=value1,key2=value2"。 | ### OH_HiTrace_FinishTraceEx() ``` void OH_HiTrace_FinishTraceEx(HiTrace_Output_Level level) ``` **描述** 标记一个同步跟踪耗时任务的结束,分级控制跟踪输出。
必须和OH_HiTrace_StartTraceEx()配对使用,参数level必须与同步跟踪的开始打点接口OH_HiTrace_StartTraceEx()的对应参数值一致。
跟踪数据解析时,和其前执行流程中最近的OH_HiTrace_StartTraceEx()进行匹配。
**起始版本:** 19 **参数:** | 参数项 | 描述 | | -- | -- | | [HiTrace_Output_Level](capi-trace-h.md#hitrace_output_level) level | 跟踪输出优先级。 | ### OH_HiTrace_StartAsyncTraceEx() ``` void OH_HiTrace_StartAsyncTraceEx(HiTrace_Output_Level level, const char *name, int32_t taskId, const char *customCategory, const char *customArgs) ``` **描述** 标记一个异步跟踪耗时任务的开始,分级控制跟踪输出。
用于在异步操作执行前进行开始打点,异步跟踪开始和结束数据由于不是顺序发生的,所以解析时需要通过一个唯一的taskId进行识别。
和OH_HiTrace_FinishAsyncTraceEx()配对使用,参数name和taskId相同的开始与结束打点相匹配,构成一个异步跟踪耗时任务。
如果有多个相同name的任务需要跟踪或者对同一个任务跟踪多次,并且任务同时被执行,则每次调用的taskId需不相同。
如果具有相同name的任务是串行执行的,则taskId可以相同。
不同进程的taskId不会相互干扰。
**起始版本:** 19 **参数:** | 参数项 | 描述 | | -- | -- | | [HiTrace_Output_Level](capi-trace-h.md#hitrace_output_level) level | 跟踪输出优先级。 | | const char *name | 异步跟踪的名字。 | | int32_t taskId | 异步跟踪的ID。 | | const char *customCategory | 自定义聚类名称,用于聚合同一类异步跟踪打点。 | | const char *customArgs | 键值对,多个键值对使用逗号分隔,例"key1=value1,key2=value2"。 | ### OH_HiTrace_FinishAsyncTraceEx() ``` void OH_HiTrace_FinishAsyncTraceEx(HiTrace_Output_Level level, const char *name, int32_t taskId) ``` **描述** 标记一个异步跟踪耗时任务的结束,分级控制跟踪输出。
用于在异步操作完成后进行结束打点,例如在回调函数中调用。
和OH_HiTrace_StartAsyncTraceEx()配对使用,参数level、name和taskId必须与异步跟踪开始打点接口的对应参数值保持一致。
**起始版本:** 19 **参数:** | 参数项 | 描述 | | -- | -- | | [HiTrace_Output_Level](capi-trace-h.md#hitrace_output_level) level | 跟踪输出优先级。 | | const char *name | 异步跟踪的名字。 | | int32_t taskId | 异步跟踪的ID。 | ### OH_HiTrace_CountTraceEx() ``` void OH_HiTrace_CountTraceEx(HiTrace_Output_Level level, const char *name, int64_t count) ``` **描述** 标记一个跟踪的整数变量,分级控制跟踪输出。 **起始版本:** 19 **参数:** | 参数项 | 描述 | | -- | -- | | [HiTrace_Output_Level](capi-trace-h.md#hitrace_output_level) level | 跟踪输出优先级。 | | const char *name | 整数变量的名称,不必与实际变量名相同。 | | int64_t count | 整数值。 | ### OH_HiTrace_IsTraceEnabled() ``` bool OH_HiTrace_IsTraceEnabled(void) ``` **描述** 判断当前是否开启应用trace捕获。 **起始版本:** 19 **返回:** | 类型 | 说明 | | -- | -- | | bool | 使用hitrace命令行工具等方式开启采集时返回true。
未开启采集或停止采集后返回false,此时调用HiTraceMeter性能跟踪打点接口无效。 |