提交 5ecf8219 编写于 作者: X xuyong

Rename HiTrace to HiTraceChain

Signed-off-by: Nxuyong <xuyong59@huawei.com>
上级 33dca177
# HiTrace开发指导
# HiTraceChain开发指导
## 概述
HiTrace主要是对于跨设备/跨进程/跨线程的业务流程,通过相同的traceid在整个业务流程中传递,将流程处理过程中的调用关系、各种输出信息关联和展现出来,帮助使用者分析、定位问题和系统调优。
HiTraceChain主要是对于跨设备/跨进程/跨线程的业务流程,通过相同的traceid在整个业务流程中传递,将流程处理过程中的调用关系、各种输出信息关联和展现出来,帮助使用者分析、定位问题和系统调优。
## 应用场景
HiTrace在产品中应用场景如下,包括:
HiTraceChain在产品中应用场景如下,包括:
- 端侧业务流程信息(日志、事件等)关联、上报
......@@ -15,7 +15,7 @@ HiTrace在产品中应用场景如下,包括:
- IDE对业务流程详细信息、耗时分布进行调试,辅助系统调优
**图1** HiTrace应用场景
**图1** HiTraceChain应用场景
![zh-cn_image_0000001216312860](figures/zh-cn_image_0000001216312860.png)
......@@ -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层,主要原理是在一次业务调用流程中,利用通
| | **C++** | **C** |
| -------- | -------- | -------- |
| **类** | **函数** | **函数** |
| HiTrace | HiTraceId&nbsp;Begin(const&nbsp;std::string&amp;&nbsp;name,&nbsp;int&nbsp;flags) | HiTraceIdStruct&nbsp;HiTraceBegin(const&nbsp;char\*&nbsp;name,&nbsp;int&nbsp;flags) |
| | void&nbsp;End(const&nbsp;HiTraceId&amp;&nbsp;id) | void&nbsp;HiTraceEnd(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | HiTraceId&nbsp;GetId(); | HiTraceIdStruct&nbsp;HiTraceGetId() |
| | void&nbsp;SetId(const&nbsp;HiTraceId&amp;&nbsp;id) | void&nbsp;HiTraceSetId(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | void&nbsp;ClearId() | void&nbsp;HiTraceClearId() |
| | HiTraceId&nbsp;CreateSpan() | HiTraceIdStruct&nbsp;HiTraceCreateSpan() |
| | void&nbsp;Tracepoint(HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceId&amp;&nbsp;id,&nbsp;const&nbsp;char\*&nbsp;fmt,&nbsp;...) | void&nbsp;HiTraceTracepoint(HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceIdStruct_&nbsp;pId,&nbsp;const&nbsp;char_&nbsp;fmt,&nbsp;...) |
| | void&nbsp;Tracepoint(HiTraceCommunicationMode&nbsp;mode,&nbsp;HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceId&amp;&nbsp;id,&nbsp;const&nbsp;char\*&nbsp;fmt,&nbsp;...) | void&nbsp;HiTraceTracepointEx(HiTraceCommunicationMode&nbsp;mode,&nbsp;HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceIdStruct_&nbsp;pId,&nbsp;const&nbsp;char_&nbsp;fmt,&nbsp;...) |
| HiTraceId | HiTraceId(); | void&nbsp;HiTraceInitId(HiTraceIdStruct\*&nbsp;pId) |
| | HiTraceId(const&nbsp;uint8_t\*&nbsp;pIdArray,&nbsp;int&nbsp;len) | HiTraceIdStruct&nbsp;HiTraceBytesToId(const&nbsp;uint8_t\*&nbsp;pIdArray,&nbsp;int&nbsp;len) |
| | bool&nbsp;IsValid() | int&nbsp;HiTraceIsValid(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | bool&nbsp;IsFlagEnabled(HiTraceFlag&nbsp;flag) | int&nbsp;HiTraceIsFlagEnabled(const&nbsp;HiTraceIdStruct\*&nbsp;pId,&nbsp;HiTraceFlag&nbsp;flag) |
| | void&nbsp;EnableFlag(HiTraceFlag&nbsp;flag) | void&nbsp;HiTraceEnableFlag(HiTraceIdStruct\*&nbsp;pId,&nbsp;HiTraceFlag&nbsp;flag) |
| | int&nbsp;GetFlags() | int&nbsp;HiTraceGetFlags(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | void&nbsp;SetFlags(int&nbsp;flags) | void&nbsp;HiTraceSetFlags(HiTraceIdStruct\*&nbsp;pId,&nbsp;int&nbsp;flags) |
| | uint64_t&nbsp;GetChainId() | uint64_t&nbsp;HiTraceGetChainId(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | void&nbsp;SetChainId(uint64_t&nbsp;chainId) | void&nbsp;HiTraceSetChainId(HiTraceIdStruct\*&nbsp;pId,&nbsp;uint64_t&nbsp;chainId) |
| | uint64_t&nbsp;GetSpanId() | uint64_t&nbsp;HiTraceGetSpanId(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | void&nbsp;SetSpanId(uint64_t&nbsp;spanId) | void&nbsp;HiTraceSetSpanId(HiTraceIdStruct\*&nbsp;pId,&nbsp;uint64_t&nbsp;spanId) |
| | uint64_t&nbsp;GetParentSpanId() | uint64_t&nbsp;HiTraceGetParentSpanId(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | void&nbsp;SetParentSpanId(uint64_t&nbsp;parentSpanId) | void&nbsp;HiTraceSetParentSpanId(HiTraceIdStruct\*&nbsp;pId,&nbsp;uint64_t&nbsp;parentSpanId) |
| | int&nbsp;ToBytes(uint8_t\*&nbsp;pIdArray,&nbsp;int&nbsp;len) | int&nbsp;HiTraceIdToBytes(const&nbsp;HiTraceIdStruct_&nbsp;pId,&nbsp;uint8_t_&nbsp;pIdArray,&nbsp;int&nbsp;len) |
| HiTraceChain | HiTraceId&nbsp;Begin(const&nbsp;std::string&amp;&nbsp;name,&nbsp;int&nbsp;flags) | HiTraceIdStruct&nbsp;HiTraceChainBegin(const&nbsp;char\*&nbsp;name,&nbsp;int&nbsp;flags) |
| | void&nbsp;End(const&nbsp;HiTraceId&amp;&nbsp;id) | void&nbsp;HiTraceChainEnd(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | HiTraceId&nbsp;GetId(); | HiTraceIdStruct&nbsp;HiTraceChainGetId() |
| | void&nbsp;SetId(const&nbsp;HiTraceId&amp;&nbsp;id) | void&nbsp;HiTraceChainSetId(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | void&nbsp;ClearId() | void&nbsp;HiTraceChainClearId() |
| | HiTraceId&nbsp;CreateSpan() | HiTraceIdStruct&nbsp;HiTraceChainCreateSpan() |
| | void&nbsp;Tracepoint(HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceId&amp;&nbsp;id,&nbsp;const&nbsp;char\*&nbsp;fmt,&nbsp;...) | void&nbsp;HiTraceChainTracepoint(HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceIdStruct_&nbsp;pId,&nbsp;const&nbsp;char_&nbsp;fmt,&nbsp;...) |
| | void&nbsp;Tracepoint(HiTraceCommunicationMode&nbsp;mode,&nbsp;HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceId&amp;&nbsp;id,&nbsp;const&nbsp;char\*&nbsp;fmt,&nbsp;...) | void&nbsp;HiTraceChainTracepointEx(HiTraceCommunicationMode&nbsp;mode,&nbsp;HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceIdStruct_&nbsp;pId,&nbsp;const&nbsp;char_&nbsp;fmt,&nbsp;...) |
| HiTraceId | HiTraceId(); | void&nbsp;HiTraceChainInitId(HiTraceIdStruct\*&nbsp;pId) |
| | HiTraceId(const&nbsp;uint8_t\*&nbsp;pIdArray,&nbsp;int&nbsp;len) | HiTraceIdStruct&nbsp;HiTraceChainBytesToId(const&nbsp;uint8_t\*&nbsp;pIdArray,&nbsp;int&nbsp;len) |
| | bool&nbsp;IsValid() | int&nbsp;HiTraceChainIsValid(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | bool&nbsp;IsFlagEnabled(HiTraceFlag&nbsp;flag) | int&nbsp;HiTraceChainIsFlagEnabled(const&nbsp;HiTraceIdStruct\*&nbsp;pId,&nbsp;HiTraceFlag&nbsp;flag) |
| | void&nbsp;EnableFlag(HiTraceFlag&nbsp;flag) | void&nbsp;HiTraceChainEnableFlag(HiTraceIdStruct\*&nbsp;pId,&nbsp;HiTraceFlag&nbsp;flag) |
| | int&nbsp;GetFlags() | int&nbsp;HiTraceChainGetFlags(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | void&nbsp;SetFlags(int&nbsp;flags) | void&nbsp;HiTraceChainSetFlags(HiTraceIdStruct\*&nbsp;pId,&nbsp;int&nbsp;flags) |
| | uint64_t&nbsp;GetChainId() | uint64_t&nbsp;HiTraceChainGetChainId(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | void&nbsp;SetChainId(uint64_t&nbsp;chainId) | void&nbsp;HiTraceChainSetChainId(HiTraceIdStruct\*&nbsp;pId,&nbsp;uint64_t&nbsp;chainId) |
| | uint64_t&nbsp;GetSpanId() | uint64_t&nbsp;HiTraceChainGetSpanId(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | void&nbsp;SetSpanId(uint64_t&nbsp;spanId) | void&nbsp;HiTraceChainSetSpanId(HiTraceIdStruct\*&nbsp;pId,&nbsp;uint64_t&nbsp;spanId) |
| | uint64_t&nbsp;GetParentSpanId() | uint64_t&nbsp;HiTraceChainGetParentSpanId(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | void&nbsp;SetParentSpanId(uint64_t&nbsp;parentSpanId) | void&nbsp;HiTraceChainSetParentSpanId(HiTraceIdStruct\*&nbsp;pId,&nbsp;uint64_t&nbsp;parentSpanId) |
| | int&nbsp;ToBytes(uint8_t\*&nbsp;pIdArray,&nbsp;int&nbsp;len) | int&nbsp;HiTraceChainIdToBytes(const&nbsp;HiTraceIdStruct_&nbsp;pId,&nbsp;uint8_t_&nbsp;pIdArray,&nbsp;int&nbsp;len) |
### 接口功能参数
......@@ -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/>注意:嵌套启动跟踪时,内层启动调用返回无效对象。 |
| | void&nbsp;End(const&nbsp;HiTraceId&amp;&nbsp;id) | 功能:根据Begin返回的HiTraceId停止HiTrace跟踪;清除当前线程TLS中HiTraceId内容。<br/>输入参数:<br/>-&nbsp;id:HiTraceId对象。<br/>输出参数:无。<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停止HiTraceChain跟踪;清除当前线程TLS中HiTraceId内容。<br/>输入参数:<br/>-&nbsp;id:HiTraceId对象。<br/>输出参数:无。<br/>返回值:无。 |
| | 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;ClearId() | 功能:清除当前线程TLS中的HiTraceId对象。<br/>输入参数:无。<br/>输出参数:无。<br/>返回值:无。 |
| | 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(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(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;...) | 功能:根据通信模式、埋点信息类型输出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(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;无效。 |
......@@ -107,7 +107,7 @@ HiTrace实现在C层,主要原理是在一次业务调用流程中,利用通
## 通信调用处理
业务使用时跨设备/跨进程/跨线程的调用是通过通信机制实现的,HiTrace需要通信机制传递traceid。
业务使用时跨设备/跨进程/跨线程的调用是通过通信机制实现的,HiTraceChain需要通信机制传递traceid。
OpenHarmony系统内置部分通信机制(如ZIDL)已经支持传递traceid。
......@@ -158,47 +158,47 @@ OpenHarmony系统内置部分通信机制(如ZIDL)已经支持传递traceid
### C++接口实例
1. 源代码开发
在类定义头文件或者类实现源文件中,包含hitrace头文件:
在类定义头文件或者类实现源文件中,包含hitracechain头文件:
```
#include "hitrace/trace.h"
#include "hitrace/tracechain.h"
```
在业务类实现源文件中使用(启动/结束跟踪):
```
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依赖:
```
external_deps = [ "hiviewdfx:libhitrace" ]
external_deps = [ "hiviewdfx:libhitracechain" ]
```
### C接口实例
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依赖:
```
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.
先完成此消息的编辑!
想要评论请 注册