1e41f4b71Sopenharmony_ci# trace.h
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ci## 概述
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ciHiTraceMeter模块打点接口定义,通过这些接口实现性能打点相关功能。
7e41f4b71Sopenharmony_ci
8e41f4b71Sopenharmony_ci使用示例:
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci同步时间片跟踪事件:
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ci  
13e41f4b71Sopenharmony_ci```
14e41f4b71Sopenharmony_ciOH_HiTrace_StartTrace("hitraceTest");
15e41f4b71Sopenharmony_ciOH_HiTrace_FinishTrace();
16e41f4b71Sopenharmony_ci```
17e41f4b71Sopenharmony_ci
18e41f4b71Sopenharmony_ci结果输出:
19e41f4b71Sopenharmony_ci
20e41f4b71Sopenharmony_ci  
21e41f4b71Sopenharmony_ci```
22e41f4b71Sopenharmony_ci<...>-1668 (----—) [003] .... 135.059377: tracing_mark_write: B|1668|H:hitraceTest
23e41f4b71Sopenharmony_ci<...>-1668 (----—) [003] .... 135.059415: tracing_mark_write: E|1668|
24e41f4b71Sopenharmony_ci```
25e41f4b71Sopenharmony_ci
26e41f4b71Sopenharmony_ci异步时间片跟踪事件:
27e41f4b71Sopenharmony_ci
28e41f4b71Sopenharmony_ci  
29e41f4b71Sopenharmony_ci```
30e41f4b71Sopenharmony_ciOH_HiTrace_StartAsyncTrace("hitraceTest", 123);
31e41f4b71Sopenharmony_ciOH_HiTrace_FinishAsyncTrace("hitraceTest", 123);
32e41f4b71Sopenharmony_ci```
33e41f4b71Sopenharmony_ci
34e41f4b71Sopenharmony_ci结果输出:
35e41f4b71Sopenharmony_ci
36e41f4b71Sopenharmony_ci  
37e41f4b71Sopenharmony_ci```
38e41f4b71Sopenharmony_ci<...>-2477 (----—) [001] .... 396.427165: tracing_mark_write: S|2477|H:hitraceTest 123
39e41f4b71Sopenharmony_ci<...>-2477 (----—) [001] .... 396.427196: tracing_mark_write: F|2477|H:hitraceTest 123
40e41f4b71Sopenharmony_ci```
41e41f4b71Sopenharmony_ci
42e41f4b71Sopenharmony_ci整数值跟踪事件:
43e41f4b71Sopenharmony_ci
44e41f4b71Sopenharmony_ci  
45e41f4b71Sopenharmony_ci```
46e41f4b71Sopenharmony_ciOH_HiTrace_CountTrace("hitraceTest", 500);
47e41f4b71Sopenharmony_ci```
48e41f4b71Sopenharmony_ci
49e41f4b71Sopenharmony_ci结果输出:
50e41f4b71Sopenharmony_ci
51e41f4b71Sopenharmony_ci  
52e41f4b71Sopenharmony_ci```
53e41f4b71Sopenharmony_ci<...>-2638 (----—) [002] .... 458.904382: tracing_mark_write: C|2638|H:hitraceTest 500
54e41f4b71Sopenharmony_ci```
55e41f4b71Sopenharmony_ci
56e41f4b71Sopenharmony_ci**引用文件:**
57e41f4b71Sopenharmony_ci
58e41f4b71Sopenharmony_ci&lt;hitrace/trace.h&gt;
59e41f4b71Sopenharmony_ci
60e41f4b71Sopenharmony_ci**起始版本:**
61e41f4b71Sopenharmony_ci
62e41f4b71Sopenharmony_ci10
63e41f4b71Sopenharmony_ci
64e41f4b71Sopenharmony_ci**相关模块:**
65e41f4b71Sopenharmony_ci
66e41f4b71Sopenharmony_ci[Hitrace](_hitrace.md)
67e41f4b71Sopenharmony_ci
68e41f4b71Sopenharmony_ci
69e41f4b71Sopenharmony_ci## 汇总
70e41f4b71Sopenharmony_ci
71e41f4b71Sopenharmony_ci### 结构体
72e41f4b71Sopenharmony_ci
73e41f4b71Sopenharmony_ci| 名称 | 描述 | 
74e41f4b71Sopenharmony_ci| -------- | -------- |
75e41f4b71Sopenharmony_ci| struct&nbsp;&nbsp;[HiTraceId](_hi_trace_id.md) | HiTraceId定义  | 
76e41f4b71Sopenharmony_ci
77e41f4b71Sopenharmony_ci### 类型定义
78e41f4b71Sopenharmony_ci
79e41f4b71Sopenharmony_ci| 名称 | 描述 | 
80e41f4b71Sopenharmony_ci| -------- | -------- |
81e41f4b71Sopenharmony_ci| typedef enum [HiTraceId_Valid](_hitrace.md#hitraceid_valid) [HiTraceId_Valid](_hitrace.md#hitraceid_valid) | HiTraceId是否有效标志  | 
82e41f4b71Sopenharmony_ci| typedef enum [HiTrace_Version](_hitrace.md#hitrace_version) [HiTrace_Version](_hitrace.md#hitrace_version) | HiTrace版本号  | 
83e41f4b71Sopenharmony_ci| typedef enum [HiTrace_Flag](_hitrace.md#hitrace_flag) [HiTrace_Flag](_hitrace.md#hitrace_flag) | HiTrace标志位  | 
84e41f4b71Sopenharmony_ci| typedef enum [HiTrace_Tracepoint_Type](_hitrace.md#hitrace_tracepoint_type) [HiTrace_Tracepoint_Type](_hitrace.md#hitrace_tracepoint_type) | HiTrace打点类型  | 
85e41f4b71Sopenharmony_ci| typedef enum [HiTrace_Communication_Mode](_hitrace.md#hitrace_communication_mode) [HiTrace_Communication_Mode](_hitrace.md#hitrace_communication_mode) |  | 
86e41f4b71Sopenharmony_ci|  typedef struct [HiTraceId](_hi_trace_id.md)**HiTraceId** |  | 
87e41f4b71Sopenharmony_ci
88e41f4b71Sopenharmony_ci
89e41f4b71Sopenharmony_ci### 枚举
90e41f4b71Sopenharmony_ci
91e41f4b71Sopenharmony_ci| 名称 | 描述 | 
92e41f4b71Sopenharmony_ci| -------- | -------- |
93e41f4b71Sopenharmony_ci| [HiTraceId_Valid](_hitrace.md#hitraceid_valid) { [HITRACE_ID_INVALID](_hitrace.md) = 0, [HITRACE_ID_VALID](_hitrace.md) = 1 } | HiTraceId是否有效标志  | 
94e41f4b71Sopenharmony_ci| [HiTrace_Version](_hitrace.md#hitrace_version) { [HITRACE_VER_1](_hitrace.md) = 0 } | HiTrace版本号  | 
95e41f4b71Sopenharmony_ci| [HiTrace_Flag](_hitrace.md#hitrace_flag) {<br/>[HITRACE_FLAG_DEFAULT](_hitrace.md) = 0, [HITRACE_FLAG_INCLUDE_ASYNC](_hitrace.md) = 1 &lt;&lt; 0, [HITRACE_FLAG_DONOT_CREATE_SPAN](_hitrace.md) = 1 &lt;&lt; 1, [HITRACE_FLAG_TP_INFO](_hitrace.md) = 1 &lt;&lt; 2,<br/>[HITRACE_FLAG_NO_BE_INFO](_hitrace.md) = 1 &lt;&lt; 3, [HITRACE_FLAG_DONOT_ENABLE_LOG](_hitrace.md) = 1 &lt;&lt; 4, [HITRACE_FLAG_FAULT_TRIGGER](_hitrace.md) = 1 &lt;&lt; 5, [HITRACE_FLAG_D2D_TP_INFO](_hitrace.md) = 1 &lt;&lt; 6<br/>} | HiTrace标志位  | 
96e41f4b71Sopenharmony_ci| [HiTrace_Tracepoint_Type](_hitrace.md#hitrace_tracepoint_type) {<br/>[HITRACE_TP_CS](_hitrace.md) = 0, [HITRACE_TP_CR](_hitrace.md) = 1, [HITRACE_TP_SS](_hitrace.md) = 2, [HITRACE_TP_SR](_hitrace.md) = 3,<br/>[HITRACE_TP_GENERAL](_hitrace.md) = 4<br/>} | HiTrace打点类型  | 
97e41f4b71Sopenharmony_ci| [HiTrace_Communication_Mode](_hitrace.md#hitrace_communication_mode) { [HITRACE_CM_DEFAULT](_hitrace.md) = 0, [HITRACE_CM_THREAD](_hitrace.md) = 1, [HITRACE_CM_PROCESS](_hitrace.md) = 2, [HITRACE_CM_DEVICE](_hitrace.md) = 3 } |  | 
98e41f4b71Sopenharmony_ci
99e41f4b71Sopenharmony_ci
100e41f4b71Sopenharmony_ci### 函数
101e41f4b71Sopenharmony_ci
102e41f4b71Sopenharmony_ci| 名称 | 描述 | 
103e41f4b71Sopenharmony_ci| -------- | -------- |
104e41f4b71Sopenharmony_ci| [HiTraceId](_hi_trace_id.md) [OH_HiTrace_BeginChain](_hitrace.md#oh_hitrace_beginchain) (const char \*name, int flags) | 开始跟踪进程实现。  | 
105e41f4b71Sopenharmony_ci| void [OH_HiTrace_EndChain](_hitrace.md#oh_hitrace_endchain) () | 如果给定的跟踪ID有效,则停止进程跟踪并清除当前线程的跟踪ID,否则不执行任何操作。  | 
106e41f4b71Sopenharmony_ci| [HiTraceId](_hi_trace_id.md) [OH_HiTrace_GetId](_hitrace.md#oh_hitrace_getid) () | 获取当前线程的跟踪ID,如果没有属于当前线程的跟踪ID,则返回一个无效的跟踪ID  | 
107e41f4b71Sopenharmony_ci| void [OH_HiTrace_SetId](_hitrace.md#oh_hitrace_setid) (const [HiTraceId](_hi_trace_id.md) \*id) | 将id设置为当前线程的跟踪id。如果ID无效,则不执行任何操作。  | 
108e41f4b71Sopenharmony_ci| void [OH_HiTrace_ClearId](_hitrace.md#oh_hitrace_clearid) (void) | 清除当前线程的跟踪ID并将其设置为无效。  | 
109e41f4b71Sopenharmony_ci| [HiTraceId](_hi_trace_id.md) [OH_HiTrace_CreateSpan](_hitrace.md#oh_hitrace_createspan) (void) | 根据当前线程的跟踪id创建一个新的span id。  | 
110e41f4b71Sopenharmony_ci| void [OH_HiTrace_Tracepoint](_hitrace.md#oh_hitrace_tracepoint) ([HiTrace_Communication_Mode](_hitrace.md#hitrace_communication_mode) mode, [HiTrace_Tracepoint_Type](_hitrace.md#hitrace_tracepoint_type) type, const [HiTraceId](_hi_trace_id.md) \*id, const char \*fmt,...) | 打印hitrace信息,包括跟踪ID信息。  | 
111e41f4b71Sopenharmony_ci| void [OH_HiTrace_InitId](_hitrace.md#oh_hitrace_initid) ([HiTraceId](_hi_trace_id.md) \*id) | 初始化HiTraceId结构体。  | 
112e41f4b71Sopenharmony_ci| void [OH_HiTrace_IdFromBytes](_hitrace.md#oh_hitrace_idfrombytes) ([HiTraceId](_hi_trace_id.md) \*id, const uint8_t \*pIdArray, int len) | 根据字节数组创建跟踪HiTraceId结构体。  | 
113e41f4b71Sopenharmony_ci| bool [OH_HiTrace_IsIdValid](_hitrace.md#oh_hitrace_isidvalid) (const [HiTraceId](_hi_trace_id.md) \*id) | 判断trace id是否有效。  | 
114e41f4b71Sopenharmony_ci| bool [OH_HiTrace_IsFlagEnabled](_hitrace.md#oh_hitrace_isflagenabled) (const [HiTraceId](_hi_trace_id.md) \*id, [HiTrace_Flag](_hitrace.md#hitrace_flag) flag) | 判断跟踪id是否启用了跟踪标志。  | 
115e41f4b71Sopenharmony_ci| void [OH_HiTrace_EnableFlag](_hitrace.md#oh_hitrace_enableflag) (const [HiTraceId](_hi_trace_id.md) \*id, [HiTrace_Flag](_hitrace.md#hitrace_flag) flag) | 启用跟踪ID的指定跟踪标志。  | 
116e41f4b71Sopenharmony_ci| int [OH_HiTrace_GetFlags](_hitrace.md#oh_hitrace_getflags) (const [HiTraceId](_hi_trace_id.md) \*id) | 获取HiTraceId结构体中设置的标志位。  | 
117e41f4b71Sopenharmony_ci| void [OH_HiTrace_SetFlags](_hitrace.md#oh_hitrace_setflags) ([HiTraceId](_hi_trace_id.md) \*id, int flags) | 设置跟踪标志位到HiTraceId结构体中。  | 
118e41f4b71Sopenharmony_ci| uint64_t [OH_HiTrace_GetChainId](_hitrace.md#oh_hitrace_getchainid) (const [HiTraceId](_hi_trace_id.md) \*id) | 获取跟踪链ID。  | 
119e41f4b71Sopenharmony_ci| void [OH_HiTrace_SetChainId](_hitrace.md#oh_hitrace_setchainid) ([HiTraceId](_hi_trace_id.md) \*id, uint64_t chainId) | 设置跟踪链ID到HiTraceId结构体中。  | 
120e41f4b71Sopenharmony_ci| uint64_t [OH_HiTrace_GetSpanId](_hitrace.md#oh_hitrace_getspanid) (const [HiTraceId](_hi_trace_id.md) \*id) | 获取当前HiTraceId结构体中的分支ID。  | 
121e41f4b71Sopenharmony_ci| void [OH_HiTrace_SetSpanId](_hitrace.md#oh_hitrace_setspanid) ([HiTraceId](_hi_trace_id.md) \*id, uint64_t spanId) | 设置分支ID到HiTraceId结构体中。  | 
122e41f4b71Sopenharmony_ci| uint64_t [OH_HiTrace_GetParentSpanId](_hitrace.md#oh_hitrace_getparentspanid) (const [HiTraceId](_hi_trace_id.md) \*id) | 获取当前HiTraceId结构体中的父分支ID。  | 
123e41f4b71Sopenharmony_ci| void [OH_HiTrace_SetParentSpanId](_hitrace.md#oh_hitrace_setparentspanid) ([HiTraceId](_hi_trace_id.md) \*id, uint64_t parentSpanId) | 设置HiTraceId结构的parentSpanId字符。  | 
124e41f4b71Sopenharmony_ci| int [OH_HiTrace_IdToBytes](_hitrace.md#oh_hitrace_idtobytes) (const [HiTraceId](_hi_trace_id.md) \*id, uint8_t \*pIdArray, int len) | 将HiTraceId结构体转换为字节数组,用于缓存或者通信传递。  | 
125e41f4b71Sopenharmony_ci| void [OH_HiTrace_StartTrace](_hitrace.md#oh_hitrace_starttrace) (const char \*name) | 标记一个同步跟踪耗时任务的开始。  | 
126e41f4b71Sopenharmony_ci| void [OH_HiTrace_FinishTrace](_hitrace.md#oh_hitrace_finishtrace) (void) | 标记一个同步跟踪耗时任务的结束。  | 
127e41f4b71Sopenharmony_ci| void [OH_HiTrace_StartAsyncTrace](_hitrace.md#oh_hitrace_startasynctrace) (const char \*name, int32_t taskId) | 标记一个异步跟踪耗时任务的开始。  | 
128e41f4b71Sopenharmony_ci| void [OH_HiTrace_FinishAsyncTrace](_hitrace.md#oh_hitrace_finishasynctrace) (const char \*name, int32_t taskId) | 标记一个异步跟踪耗时任务的结束。  | 
129e41f4b71Sopenharmony_ci| void [OH_HiTrace_CountTrace](_hitrace.md#oh_hitrace_counttrace) (const char \*name, int64_t count) | 用于跟踪给定整数变量名和整数值。  | 
130