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