未验证 提交 abd25778 编写于 作者: O openharmony_ci 提交者: Gitee

!10374 Rename HiTrace to HiTraceChain

Merge pull request !10374 from honghecun/master
# HiTrace开发指导 # HiTraceChain开发指导
## 概述 ## 概述
HiTrace主要是对于跨设备/跨进程/跨线程的业务流程,通过相同的traceid在整个业务流程中传递,将流程处理过程中的调用关系、各种输出信息关联和展现出来,帮助使用者分析、定位问题和系统调优。 HiTraceChain主要是对于跨设备/跨进程/跨线程的业务流程,通过相同的traceid在整个业务流程中传递,将流程处理过程中的调用关系、各种输出信息关联和展现出来,帮助使用者分析、定位问题和系统调优。
## 应用场景 ## 应用场景
HiTrace在产品中应用场景如下,包括: HiTraceChain在产品中应用场景如下,包括:
- 端侧业务流程信息(日志、事件等)关联、上报 - 端侧业务流程信息(日志、事件等)关联、上报
...@@ -15,7 +15,7 @@ HiTrace在产品中应用场景如下,包括: ...@@ -15,7 +15,7 @@ HiTrace在产品中应用场景如下,包括:
- IDE对业务流程详细信息、耗时分布进行调试,辅助系统调优 - IDE对业务流程详细信息、耗时分布进行调试,辅助系统调优
**图1** HiTrace应用场景 **图1** HiTraceChain应用场景
![zh-cn_image_0000001216312860](figures/zh-cn_image_0000001216312860.png) ![zh-cn_image_0000001216312860](figures/zh-cn_image_0000001216312860.png)
...@@ -39,9 +39,9 @@ HiTrace在产品中应用场景如下,包括: ...@@ -39,9 +39,9 @@ HiTrace在产品中应用场景如下,包括:
## 接口说明 ## 接口说明
HiTrace提供C++、C接口。上层业务主要使用HiTrace跟踪启动、结束接口。 HiTraceChain提供C++、C接口。上层业务主要使用HiTraceChain跟踪启动、结束接口。
HiTrace实现在C层,主要原理是在一次业务调用流程中,利用通信传递traceid,在业务处理前将traceid设置到当前线程的TLS(Thread Local Storage)中,业务处理结束清除当前线程的TLS;这样的话,在业务处理中可以从当前线程的上下文TLS取到traceid,自动附加到日志、事件信息中。 HiTraceChain实现在C层,主要原理是在一次业务调用流程中,利用通信传递traceid,在业务处理前将traceid设置到当前线程的TLS(Thread Local Storage)中,业务处理结束清除当前线程的TLS;这样的话,在业务处理中可以从当前线程的上下文TLS取到traceid,自动附加到日志、事件信息中。
### 接口形式对比 ### 接口形式对比
...@@ -51,28 +51,28 @@ HiTrace实现在C层,主要原理是在一次业务调用流程中,利用通 ...@@ -51,28 +51,28 @@ HiTrace实现在C层,主要原理是在一次业务调用流程中,利用通
| | **C++** | **C** | | | **C++** | **C** |
| -------- | -------- | -------- | | -------- | -------- | -------- |
| **类** | **函数** | **函数** | | **类** | **函数** | **函数** |
| HiTrace | HiTraceId Begin(const std::string& name, int flags) | HiTraceIdStruct HiTraceBegin(const char\* name, int flags) | | HiTraceChain | HiTraceId Begin(const std::string& name, int flags) | HiTraceIdStruct HiTraceChainBegin(const char\* name, int flags) |
| | void End(const HiTraceId& id) | void HiTraceEnd(const HiTraceIdStruct\* pId) | | | void End(const HiTraceId& id) | void HiTraceChainEnd(const HiTraceIdStruct\* pId) |
| | HiTraceId GetId(); | HiTraceIdStruct HiTraceGetId() | | | HiTraceId GetId(); | HiTraceIdStruct HiTraceChainGetId() |
| | void SetId(const HiTraceId& id) | void HiTraceSetId(const HiTraceIdStruct\* pId) | | | void SetId(const HiTraceId& id) | void HiTraceChainSetId(const HiTraceIdStruct\* pId) |
| | void ClearId() | void HiTraceClearId() | | | void ClearId() | void HiTraceChainClearId() |
| | HiTraceId CreateSpan() | HiTraceIdStruct HiTraceCreateSpan() | | | HiTraceId CreateSpan() | HiTraceIdStruct HiTraceChainCreateSpan() |
| | void Tracepoint(HiTraceTracepointType type, const HiTraceId& id, const char\* fmt, ...) | void HiTraceTracepoint(HiTraceTracepointType type, const HiTraceIdStruct_ pId, const char_ fmt, ...) | | | void Tracepoint(HiTraceTracepointType type, const HiTraceId& id, const char\* fmt, ...) | void HiTraceChainTracepoint(HiTraceTracepointType type, const HiTraceIdStruct_ pId, const char_ fmt, ...) |
| | void Tracepoint(HiTraceCommunicationMode mode, HiTraceTracepointType type, const HiTraceId& id, const char\* fmt, ...) | void HiTraceTracepointEx(HiTraceCommunicationMode mode, HiTraceTracepointType type, const HiTraceIdStruct_ pId, const char_ fmt, ...) | | | void Tracepoint(HiTraceCommunicationMode mode, HiTraceTracepointType type, const HiTraceId& id, const char\* fmt, ...) | void HiTraceChainTracepointEx(HiTraceCommunicationMode mode, HiTraceTracepointType type, const HiTraceIdStruct_ pId, const char_ fmt, ...) |
| HiTraceId | HiTraceId(); | void HiTraceInitId(HiTraceIdStruct\* pId) | | HiTraceId | HiTraceId(); | void HiTraceChainInitId(HiTraceIdStruct\* pId) |
| | HiTraceId(const uint8_t\* pIdArray, int len) | HiTraceIdStruct HiTraceBytesToId(const uint8_t\* pIdArray, int len) | | | HiTraceId(const uint8_t\* pIdArray, int len) | HiTraceIdStruct HiTraceChainBytesToId(const uint8_t\* pIdArray, int len) |
| | bool IsValid() | int HiTraceIsValid(const HiTraceIdStruct\* pId) | | | bool IsValid() | int HiTraceChainIsValid(const HiTraceIdStruct\* pId) |
| | bool IsFlagEnabled(HiTraceFlag flag) | int HiTraceIsFlagEnabled(const HiTraceIdStruct\* pId, HiTraceFlag flag) | | | bool IsFlagEnabled(HiTraceFlag flag) | int HiTraceChainIsFlagEnabled(const HiTraceIdStruct\* pId, HiTraceFlag flag) |
| | void EnableFlag(HiTraceFlag flag) | void HiTraceEnableFlag(HiTraceIdStruct\* pId, HiTraceFlag flag) | | | void EnableFlag(HiTraceFlag flag) | void HiTraceChainEnableFlag(HiTraceIdStruct\* pId, HiTraceFlag flag) |
| | int GetFlags() | int HiTraceGetFlags(const HiTraceIdStruct\* pId) | | | int GetFlags() | int HiTraceChainGetFlags(const HiTraceIdStruct\* pId) |
| | void SetFlags(int flags) | void HiTraceSetFlags(HiTraceIdStruct\* pId, int flags) | | | void SetFlags(int flags) | void HiTraceChainSetFlags(HiTraceIdStruct\* pId, int flags) |
| | uint64_t GetChainId() | uint64_t HiTraceGetChainId(const HiTraceIdStruct\* pId) | | | uint64_t GetChainId() | uint64_t HiTraceChainGetChainId(const HiTraceIdStruct\* pId) |
| | void SetChainId(uint64_t chainId) | void HiTraceSetChainId(HiTraceIdStruct\* pId, uint64_t chainId) | | | void SetChainId(uint64_t chainId) | void HiTraceChainSetChainId(HiTraceIdStruct\* pId, uint64_t chainId) |
| | uint64_t GetSpanId() | uint64_t HiTraceGetSpanId(const HiTraceIdStruct\* pId) | | | uint64_t GetSpanId() | uint64_t HiTraceChainGetSpanId(const HiTraceIdStruct\* pId) |
| | void SetSpanId(uint64_t spanId) | void HiTraceSetSpanId(HiTraceIdStruct\* pId, uint64_t spanId) | | | void SetSpanId(uint64_t spanId) | void HiTraceChainSetSpanId(HiTraceIdStruct\* pId, uint64_t spanId) |
| | uint64_t GetParentSpanId() | uint64_t HiTraceGetParentSpanId(const HiTraceIdStruct\* pId) | | | uint64_t GetParentSpanId() | uint64_t HiTraceChainGetParentSpanId(const HiTraceIdStruct\* pId) |
| | void SetParentSpanId(uint64_t parentSpanId) | void HiTraceSetParentSpanId(HiTraceIdStruct\* pId, uint64_t parentSpanId) | | | void SetParentSpanId(uint64_t parentSpanId) | void HiTraceChainSetParentSpanId(HiTraceIdStruct\* pId, uint64_t parentSpanId) |
| | int ToBytes(uint8_t\* pIdArray, int len) | int HiTraceIdToBytes(const HiTraceIdStruct_ pId, uint8_t_ pIdArray, int len) | | | int ToBytes(uint8_t\* pIdArray, int len) | int HiTraceChainIdToBytes(const HiTraceIdStruct_ pId, uint8_t_ pIdArray, int len) |
### 接口功能参数 ### 接口功能参数
...@@ -81,14 +81,14 @@ HiTrace实现在C层,主要原理是在一次业务调用流程中,利用通 ...@@ -81,14 +81,14 @@ HiTrace实现在C层,主要原理是在一次业务调用流程中,利用通
| **类** | **方法** | **描述** | | **类** | **方法** | **描述** |
| -------- | -------- | -------- | | -------- | -------- | -------- |
| HiTrace | HiTraceId&nbsp;Begin(const&nbsp;std::string&amp;&nbsp;name,&nbsp;int&nbsp;flags) | 功能:启动HiTrace跟踪、生成HiTraceId对象并设置到当前线程TLS中。<br/>输入参数:<br/>-&nbsp;name:业务流程名称。<br/>-&nbsp;flags:跟踪指示位,可以组合使用,具体含义为:<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_INCLUDE_ASYNC:同时跟踪同步调用和异步调用,缺省只跟踪同步调用。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_DONOT_CREATE_SPAN:不创建子分支,缺省创建子分支。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_TP_INFO:输出tracepoint信息,缺省不输出。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_NO_BE_INFO:不输出起始、结束信息,缺省输出。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_DONOT_ENABLE_LOG:不与日志关联输出,缺省关联。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_FAULT_TRIGGER:故障触发的跟踪,缺省为正常启动的。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_D2D_TP_INFO:输出设备间tracepoint信息,缺省不输出。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_DEFAULT:&nbsp;缺省标志。<br/>-&nbsp;输出参数:无<br/>-&nbsp;返回值:启动跟踪超过返回有效HiTraceId对象,否则返回无效对象。<br/>注意:嵌套启动跟踪时,内层启动调用返回无效对象。 | | HiTraceChain | HiTraceId&nbsp;Begin(const&nbsp;std::string&amp;&nbsp;name,&nbsp;int&nbsp;flags) | 功能:启动HiTraceChain跟踪、生成HiTraceId对象并设置到当前线程TLS中。<br/>输入参数:<br/>-&nbsp;name:业务流程名称。<br/>-&nbsp;flags:跟踪指示位,可以组合使用,具体含义为:<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_INCLUDE_ASYNC:同时跟踪同步调用和异步调用,缺省只跟踪同步调用。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_DONOT_CREATE_SPAN:不创建子分支,缺省创建子分支。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_TP_INFO:输出tracepoint信息,缺省不输出。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_NO_BE_INFO:不输出起始、结束信息,缺省输出。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_DONOT_ENABLE_LOG:不与日志关联输出,缺省关联。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_FAULT_TRIGGER:故障触发的跟踪,缺省为正常启动的。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_D2D_TP_INFO:输出设备间tracepoint信息,缺省不输出。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_DEFAULT:&nbsp;缺省标志。<br/>-&nbsp;输出参数:无<br/>-&nbsp;返回值:启动跟踪超过返回有效HiTraceId对象,否则返回无效对象。<br/>注意:嵌套启动跟踪时,内层启动调用返回无效对象。 |
| | void&nbsp;End(const&nbsp;HiTraceId&amp;&nbsp;id) | 功能:根据Begin返回的HiTraceId停止HiTrace跟踪;清除当前线程TLS中HiTraceId内容。<br/>输入参数:<br/>-&nbsp;id:HiTraceId对象。<br/>输出参数:无。<br/>返回值:无。 | | | void&nbsp;End(const&nbsp;HiTraceId&amp;&nbsp;id) | 功能:根据Begin返回的HiTraceId停止HiTraceChain跟踪;清除当前线程TLS中HiTraceId内容。<br/>输入参数:<br/>-&nbsp;id:HiTraceId对象。<br/>输出参数:无。<br/>返回值:无。 |
| | HiTraceId&nbsp;GetId(); | 功能:从当前线程TLS中获取HiTraceId对象。<br/>输入参数:无。<br/>输出参数:无。<br/>返回值:当前线程上下文的HiTraceId对象。 | | | HiTraceId&nbsp;GetId(); | 功能:从当前线程TLS中获取HiTraceId对象。<br/>输入参数:无。<br/>输出参数:无。<br/>返回值:当前线程上下文的HiTraceId对象。 |
| | void&nbsp;SetId(const&nbsp;HiTraceId&amp;&nbsp;id) | 功能:设置HiTraceId对象内容到当前线程TLS中。<br/>输入参数:<br/>-&nbsp;id:HiTraceId对象。<br/>输出参数:无。<br/>返回值:无。 | | | void&nbsp;SetId(const&nbsp;HiTraceId&amp;&nbsp;id) | 功能:设置HiTraceId对象内容到当前线程TLS中。<br/>输入参数:<br/>-&nbsp;id:HiTraceId对象。<br/>输出参数:无。<br/>返回值:无。 |
| | void&nbsp;ClearId() | 功能:清除当前线程TLS中的HiTraceId对象。<br/>输入参数:无。<br/>输出参数:无。<br/>返回值:无。 | | | void&nbsp;ClearId() | 功能:清除当前线程TLS中的HiTraceId对象。<br/>输入参数:无。<br/>输出参数:无。<br/>返回值:无。 |
| | HiTraceId&nbsp;CreateSpan() | 接口功能:获取当前HiTraceId对象中的分支ID。<br/>输入参数:无。<br/>输出参数:无。<br/>返回值:当前分支ID。 | | | HiTraceId&nbsp;CreateSpan() | 接口功能:获取当前HiTraceId对象中的分支ID。<br/>输入参数:无。<br/>输出参数:无。<br/>返回值:当前分支ID。 |
| | void&nbsp;Tracepoint(HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceId&amp;&nbsp;id,&nbsp;const&nbsp;char\*&nbsp;fmt,&nbsp;...) | 功能:根据埋点信息类型输出HiTrace埋点信息,包括时间戳、子分支HiTraceId对象信息。<br/>输入参数:<br/>-&nbsp;type:埋点信息类型,具体为<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_CS:Client&nbsp;Send,同步/异步通信客户端发送信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_SR:Server&nbsp;Receive,&nbsp;同步/异步通信服务端接收信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_SS:Server&nbsp;Send,同步通信服务端发送响应信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_CR:Client&nbsp;Receive,同步通信客户端接收响应信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_GENERAL:普通输出信息。<br/>-&nbsp;id:当前子分支id。<br/>-&nbsp;fmt:格式化变参描述字符串。<br/>-&nbsp;args:变参。<br/>输出参数:无。<br/>返回值:无。 | | | void&nbsp;Tracepoint(HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceId&amp;&nbsp;id,&nbsp;const&nbsp;char\*&nbsp;fmt,&nbsp;...) | 功能:根据埋点信息类型输出HiTraceChain埋点信息,包括时间戳、子分支HiTraceId对象信息。<br/>输入参数:<br/>-&nbsp;type:埋点信息类型,具体为<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_CS:Client&nbsp;Send,同步/异步通信客户端发送信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_SR:Server&nbsp;Receive,&nbsp;同步/异步通信服务端接收信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_SS:Server&nbsp;Send,同步通信服务端发送响应信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_CR:Client&nbsp;Receive,同步通信客户端接收响应信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_GENERAL:普通输出信息。<br/>-&nbsp;id:当前子分支id。<br/>-&nbsp;fmt:格式化变参描述字符串。<br/>-&nbsp;args:变参。<br/>输出参数:无。<br/>返回值:无。 |
| | void&nbsp;Tracepoint(HiTraceCommunicationMode&nbsp;mode,&nbsp;HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceId&amp;&nbsp;id,&nbsp;const&nbsp;char\*&nbsp;fmt,&nbsp;...) | 功能:根据通信模式、埋点信息类型输出HiTrace埋点信息,包括时间戳、子分支HiTraceId对象信息。<br/>输入参数:<br/>-&nbsp;mode:通信模式,具体为<br/>&nbsp;&nbsp;-&nbsp;HITRACE_CM_DEFAULT:未指定通信模式。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_CM_THREAD:线程间通信。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_CM_PROCESS:进程间通信。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_CM_DEVICE:设备间通信。<br/>-&nbsp;type:埋点信息类型,具体为<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_CS:Client&nbsp;Send,同步/异步通信客户端发送信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_SR:Server&nbsp;Receive,&nbsp;同步/异步通信服务端接收信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_SS:Server&nbsp;Send,同步通信服务端发送响应信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_CR:Client&nbsp;Receive,同步通信客户端接收响应信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_GENERAL:普通输出信息。<br/>-&nbsp;id:当前子分支id。<br/>-&nbsp;fmt:格式化变参描述字符串。<br/>-&nbsp;args:变参。<br/>输出参数:无。<br/>返回值:无。 | | | void&nbsp;Tracepoint(HiTraceCommunicationMode&nbsp;mode,&nbsp;HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceId&amp;&nbsp;id,&nbsp;const&nbsp;char\*&nbsp;fmt,&nbsp;...) | 功能:根据通信模式、埋点信息类型输出HiTraceChain埋点信息,包括时间戳、子分支HiTraceId对象信息。<br/>输入参数:<br/>-&nbsp;mode:通信模式,具体为<br/>&nbsp;&nbsp;-&nbsp;HITRACE_CM_DEFAULT:未指定通信模式。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_CM_THREAD:线程间通信。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_CM_PROCESS:进程间通信。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_CM_DEVICE:设备间通信。<br/>-&nbsp;type:埋点信息类型,具体为<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_CS:Client&nbsp;Send,同步/异步通信客户端发送信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_SR:Server&nbsp;Receive,&nbsp;同步/异步通信服务端接收信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_SS:Server&nbsp;Send,同步通信服务端发送响应信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_CR:Client&nbsp;Receive,同步通信客户端接收响应信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_GENERAL:普通输出信息。<br/>-&nbsp;id:当前子分支id。<br/>-&nbsp;fmt:格式化变参描述字符串。<br/>-&nbsp;args:变参。<br/>输出参数:无。<br/>返回值:无。 |
| HiTraceId | HiTraceId(); | 功能:缺省构造函数,生成无效HiTraceId对象。<br/>输入参数:无。<br/>输出参数:无。<br/>返回值:无。 | | HiTraceId | HiTraceId(); | 功能:缺省构造函数,生成无效HiTraceId对象。<br/>输入参数:无。<br/>输出参数:无。<br/>返回值:无。 |
| | HiTraceId(const&nbsp;uint8_t\*&nbsp;pIdArray,&nbsp;int&nbsp;len) | 功能:构造函数,根据字节数组创建跟踪HiTraceId对象。<br/>输入参数:<br/>-&nbsp;pIdArray:字节数组指针。<br/>-&nbsp;len:字节数组长度。<br/>输出参数:无。<br/>返回值:无。 | | | HiTraceId(const&nbsp;uint8_t\*&nbsp;pIdArray,&nbsp;int&nbsp;len) | 功能:构造函数,根据字节数组创建跟踪HiTraceId对象。<br/>输入参数:<br/>-&nbsp;pIdArray:字节数组指针。<br/>-&nbsp;len:字节数组长度。<br/>输出参数:无。<br/>返回值:无。 |
| | bool&nbsp;IsValid() | 功能:HiTraceId对象是否有效。<br/>输入参数:无。<br/>输出参数:无。<br/>返回值:true&nbsp;有效;false&nbsp;无效。 | | | bool&nbsp;IsValid() | 功能:HiTraceId对象是否有效。<br/>输入参数:无。<br/>输出参数:无。<br/>返回值:true&nbsp;有效;false&nbsp;无效。 |
...@@ -107,7 +107,7 @@ HiTrace实现在C层,主要原理是在一次业务调用流程中,利用通 ...@@ -107,7 +107,7 @@ HiTrace实现在C层,主要原理是在一次业务调用流程中,利用通
## 通信调用处理 ## 通信调用处理
业务使用时跨设备/跨进程/跨线程的调用是通过通信机制实现的,HiTrace需要通信机制传递traceid。 业务使用时跨设备/跨进程/跨线程的调用是通过通信机制实现的,HiTraceChain需要通信机制传递traceid。
OpenHarmony系统内置部分通信机制(如ZIDL)已经支持传递traceid。 OpenHarmony系统内置部分通信机制(如ZIDL)已经支持传递traceid。
...@@ -158,47 +158,47 @@ OpenHarmony系统内置部分通信机制(如ZIDL)已经支持传递traceid ...@@ -158,47 +158,47 @@ OpenHarmony系统内置部分通信机制(如ZIDL)已经支持传递traceid
### C++接口实例 ### C++接口实例
1. 源代码开发 1. 源代码开发
在类定义头文件或者类实现源文件中,包含hitrace头文件: 在类定义头文件或者类实现源文件中,包含hitracechain头文件:
``` ```
#include "hitrace/trace.h" #include "hitrace/tracechain.h"
``` ```
在业务类实现源文件中使用(启动/结束跟踪): 在业务类实现源文件中使用(启动/结束跟踪):
``` ```
using namespace OHOS::HiviewDFX; using namespace OHOS::HiviewDFX;
HiTraceId traceId = HiTrace::Begin("MyServiceFlow", HITRACE_FLAG_DEFAULT); auto traceId = HiTraceChain::Begin("MyServiceFlow", HITRACE_FLAG_DEFAULT);
...... ......
HiTrace::End(traceId); HiTraceChain::End(traceId);
``` ```
2. 编译设置,在BUILD.gn里增加子系统SDK依赖: 2. 编译设置,在BUILD.gn里增加子系统SDK依赖:
``` ```
external_deps = [ "hiviewdfx:libhitrace" ] external_deps = [ "hiviewdfx:libhitracechain" ]
``` ```
### C接口实例 ### C接口实例
1. 源代码开发 1. 源代码开发
在源文件中,包含hitrace头文件: 在源文件中,包含hitracechain头文件:
``` ```
#include "hitrace/trace.h" #include "hitrace/tracechain.h"
``` ```
在业务类实现源文件中使用(启动/结束跟踪): 在业务类实现源文件中使用(启动/结束跟踪):
``` ```
HiTraceIdStruct traceId = HiTraceBegin("MyServiceFlow", HITRACE_FLAG_DEFAULT); HiTraceIdStruct traceId = HiTraceChainBegin("MyServiceFlow", HITRACE_FLAG_DEFAULT);
...... ......
HiTraceEnd(traceId); HiTraceChainEnd(traceId);
``` ```
2. 编译设置,在BUILD.gn里增加子系统SDK依赖: 2. 编译设置,在BUILD.gn里增加子系统SDK依赖:
``` ```
external_deps = [ "hiviewdfx:libhitrace" ] external_deps = [ "hiviewdfx:libhitracechain" ]
``` ```
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册