1# HiTrace组件<a name="ZH-CN_TOPIC_0000001078081802"></a> 2 3- [简介](#section11660541593) 4- [组件框架](#section16334748141112) 5- [目录](#section161941989596) 6- [约束](#section119744591305) 7- [说明](#section1312121216216) 8 - [接口说明](#section1551164914237) 9 - [使用说明](#section129654513264) 10 11- [相关仓](#section1371113476317) 12 13## 简介<a name="section11660541593"></a> 14 15HiTrace在OpenHarmony中,为开发者提供业务流程调用链跟踪的维测接口。通过使用该接口所提供的功能,可以帮助开发者迅速获取指定业务流程调用链的运行日志、定位跨设备/跨进程/跨线程的故障问题。 16 17## 组件框架<a name="section16334748141112"></a> 18 19**图 1** 组件框架图<a name="fig4460722185514"></a> 20 21 22 23 24HiTrace实现机制: 25 26- 基于云计算分布式调用链思想的轻量级实现。 27- 在跨设备/跨进程/跨线程的通信机制中传递traceid。 28- 在进程Native层TLS(Thread Local Storage)中存储traceid。 29- 在事件、运行日志中自动附加traceid。 30 31## 目录<a name="section161941989596"></a> 32 33``` 34/base/hiviewdfx/hitrace 35├── frameworks # 框架代码 36│ └── native # HiTrace native实现代码 37├── interfaces # 接口 38│ └── js # js接口 39│ └── kits # js接口内部实现代码 40│ └── native # C/C++接口 41│ └── innerkits # 对内部子系统暴露的头文件 42└── test # 测试用例代码 43``` 44 45## 约束<a name="section119744591305"></a> 46 47系统通用的通信机制\(IPC, EventHandler\)已支持HiTrace机制, 对业务自定义通信机制需要适配HiTrace机制。 48 49## 说明<a name="section1312121216216"></a> 50 51### 接口说明<a name="section1551164914237"></a> 52 53C++主要接口: 54 55<a name="table1764215412123"></a> 56<table><tbody><tr id="row1370464111219"><td class="cellrowborder" valign="top" width="8.98%"><p id="p1670474115124"><a name="p1670474115124"></a><a name="p1670474115124"></a><strong id="b1970404151213"><a name="b1970404151213"></a><a name="b1970404151213"></a>类</strong></p> 57</td> 58<td class="cellrowborder" valign="top" width="27.47%"><p id="p167041041191214"><a name="p167041041191214"></a><a name="p167041041191214"></a><strong id="b5925204893112"><a name="b5925204893112"></a><a name="b5925204893112"></a>方法</strong></p> 59</td> 60<td class="cellrowborder" valign="top" width="63.55%"><p id="p970484112122"><a name="p970484112122"></a><a name="p970484112122"></a><strong id="b2926194820311"><a name="b2926194820311"></a><a name="b2926194820311"></a>描述</strong></p> 61</td> 62</tr> 63<tr id="row970417418126"><td class="cellrowborder" rowspan="2" valign="top" width="8.98%"><p id="p16704184111220"><a name="p16704184111220"></a><a name="p16704184111220"></a>HiTrace</p> 64</td> 65<td class="cellrowborder" valign="top" width="27.47%"><p id="p1270444181220"><a name="p1270444181220"></a><a name="p1270444181220"></a>HiTraceId begin(String name, int flags)</p> 66</td> 67<td class="cellrowborder" valign="top" width="63.55%"><p id="p20704144114123"><a name="p20704144114123"></a><a name="p20704144114123"></a>功能:启动Hitrace跟踪,生成HiTraceId对象并设置到当前线程TLS中。</p> 68<p id="p1270494114128"><a name="p1270494114128"></a><a name="p1270494114128"></a>输入参数:</p> 69<p id="p370434151220"><a name="p370434151220"></a><a name="p370434151220"></a>name:业务流程名称。</p> 70<p id="p9704104181212"><a name="p9704104181212"></a><a name="p9704104181212"></a>flags:跟踪指示位,可以组合使用,具体含义为:</p> 71<p id="p187046416125"><a name="p187046416125"></a><a name="p187046416125"></a>HITRACE_FLAG_INCLUDE_ASYNC:同时跟踪同步调用和异步调用,缺省只跟踪同步调用。</p> 72<p id="p12704104121212"><a name="p12704104121212"></a><a name="p12704104121212"></a>HITRACE_FLAG_DONOT_CREATE_SPAN:不创建子分支,缺省创建子分支。</p> 73<p id="p17704104171210"><a name="p17704104171210"></a><a name="p17704104171210"></a>HITRACE_FLAG_TP_INFO:输出tracepoint信息,缺省不输出。</p> 74<p id="p97041241181215"><a name="p97041241181215"></a><a name="p97041241181215"></a>HITRACE_FLAG_NO_BE_INFO:不输出起始、结束信息,缺省输出。</p> 75<p id="p47041241151211"><a name="p47041241151211"></a><a name="p47041241151211"></a>HITRACE_FLAG_DONOT_ENABLE_LOG:不与日志关联输出,缺省关联。</p> 76<p id="p147041741141215"><a name="p147041741141215"></a><a name="p147041741141215"></a>HITRACE_FLAG_FAULT_TRIGGER:故障触发的跟踪,缺省为正常启动的。</p> 77<p id="p2704164181214"><a name="p2704164181214"></a><a name="p2704164181214"></a>HITRACE_FLAG_D2D_TP_INFO:输出设备间tracepoint信息,缺省不输出。</p> 78<p id="p17704941121210"><a name="p17704941121210"></a><a name="p17704941121210"></a>HITRACE_FLAG_DEFAULT: 缺省标志。</p> 79<p id="p17704174141216"><a name="p17704174141216"></a><a name="p17704174141216"></a>输出参数:无</p> 80<p id="p07045418125"><a name="p07045418125"></a><a name="p07045418125"></a>返回值:启动跟踪超过返回有效HiTraceId对象,否则返回无效对象。</p> 81<p id="p17041941151217"><a name="p17041941151217"></a><a name="p17041941151217"></a>注意:嵌套启动跟踪时,内层启动调用返回无效对象。</p> 82</td> 83</tr> 84<tr id="row18704194111211"><td class="cellrowborder" valign="top"><p id="p11704641131213"><a name="p11704641131213"></a><a name="p11704641131213"></a>void end(HiTraceId id)</p> 85</td> 86<td class="cellrowborder" valign="top"><p id="p20704144141212"><a name="p20704144141212"></a><a name="p20704144141212"></a>功能:根据begin返回的HiTraceId停止HiTrace跟踪;清除当前线程TLS中HiTraceId内容。</p> 87<p id="p7704174181215"><a name="p7704174181215"></a><a name="p7704174181215"></a>输入参数:</p> 88<p id="p14704134111216"><a name="p14704134111216"></a><a name="p14704134111216"></a>id:HiTraceId对象</p> 89<p id="p15704104111215"><a name="p15704104111215"></a><a name="p15704104111215"></a>输出参数:无</p> 90<p id="p16704741181213"><a name="p16704741181213"></a><a name="p16704741181213"></a>返回值:无</p> 91</td> 92</tr> 93</tbody> 94</table> 95 96 97## 相关仓<a name="section1371113476317"></a> 98 99[DFX子系统](https://gitee.com/openharmony/docs/blob/master/zh-cn/readme/DFX%E5%AD%90%E7%B3%BB%E7%BB%9F.md) 100 101[hiviewdfx\_hiview](https://gitee.com/openharmony/hiviewdfx_hiview/blob/master/README_zh.md) 102 103[hiviewdfx\_hilog](https://gitee.com/openharmony/hiviewdfx_hilog/blob/master/README_zh.md) 104 105[hiviewdfx\_hiappevent](https://gitee.com/openharmony/hiviewdfx_hiappevent/blob/master/README_zh.md) 106 107[hiviewdfx\_hisysevent](https://gitee.com/openharmony/hiviewdfx_hisysevent/blob/master/README_zh.md) 108