1# 使用HiTraceMeter跟踪性能(C/C++) 2 3HiTrace为开发者提供业务流程调用链跟踪的维测接口。该接口所提供的功能,可以帮助开发者迅速获取指定业务流程调用链的运行日志、定位跨设备/跨进程/跨线程的故障问题。 4 5## 接口说明 6 7性能打点跟踪接口由HiTraceMeter模块提供,详细API请参考[性能打点跟踪API参考](../reference/apis-performance-analysis-kit/_hitrace.md)。 8 9| 方法 | 接口描述 | 10| -------- | -------- | 11| void OH_HiTrace_StartTrace(const char* name) | 开启一个同步时间片跟踪事件 | 12| void OH_HiTrace_FinishTrace() | 结束一个同步时间片跟踪事件 | 13| void OH_HiTrace_StartAsyncTrace(const char* name, int32_t taskId) | 开启一个异步时间片跟踪事件 | 14| void OH_HiTrace_FinishAsyncTrace(const char* name, int32_t taskId) | 结束一个异步时间片跟踪事件 | 15| void OH_HiTrace_CountTrace(const char* name, int64_t count) | 整数跟踪事件 | 16 17**参数解析** 18 19| 参数名 | 类型 | 必填 | 说明 | 20| ------ | ------ | ---- | ------------------------------------------------------------ | 21| name | string | 是 | 要跟踪的数值变量名称。 | 22| taskId | number | 是 | 用来表示关联的ID,如果有多个name相同的任务是并行执行的,则每次调用startTrace的taskId不同。 | 23| count | number | 是 | 变量的值。 | 24 25## 开发示例 26 271. 在CMakeLists.txt中新增libhitrace_ndk.z.so链接。 28 29 ``` 30 target_link_libraries(entry PUBLIC libhitrace_ndk.z.so) 31 ``` 32 332. 在源文件中引用hitrace头文件。 34 35 ```c++ 36 #include "hitrace/trace.h" 37 ``` 38 393. 在需要打点的地方进行性能打点,以异步打点为例(示例代码为默认的hello.cpp的一部分,使用时只需要按照示例的使用方法将接口-参看接口说明,放在需要的地方即可)。 40 41 ```c++ 42 #include "napi/native_api.h" 43 #include "hitrace/trace.h" 44 static napi_value Add(napi_env env, napi_callback_info info) 45 { 46 // 需要开启异步时间片跟踪的地方 47 OH_HiTrace_StartAsyncTrace("hitraceTest", 123); 48 // 需要结束异步时间片跟踪的地方(此处为示例,开启点和结束点按实际需求放在需要的地方) 49 OH_HiTrace_FinishAsyncTrace("hitraceTest", 123); 50 size_t requireArgc = 2; 51 size_t argc = 2; 52 napi_value args[2] = {nullptr}; 53 54 napi_get_cb_info(env, info, &argc, args , nullptr, nullptr); 55 56 napi_valuetype valuetype0; 57 napi_typeof(env, args[0], &valuetype0); 58 59 napi_valuetype valuetype1; 60 napi_typeof(env, args[1], &valuetype1); 61 62 double value0; 63 napi_get_value_double(env, args[0], &value0); 64 65 double value1; 66 napi_get_value_double(env, args[1], &value1); 67 68 napi_value sum; 69 napi_create_double(env, value0 + value1, &sum); 70 71 return sum; 72 73 } 74 ``` 75 764. 将编译好的hap包推送到设备上安装,cmd窗口执行hdc shell连上设备后执行命令:hitrace --trace_begin app。 77 78 ```shell 79 capturing trace... 80 ``` 81 825. 设备上重复点击几次新安装的hap,然后在shell窗口dump trace查看结果,命令是:hitrace --trace_dump | grep hitraceTest。 83 84 ```shell 85 <...>-2477 (-------) [001] .... 396.427165: tracing_mark_write: S|2477|H:hitraceTest 123 86 <...>-2477 (-------) [001] .... 396.427196: tracing_mark_write: F|2477|H:hitraceTest 123 87 ```