1# 性能打点跟踪开发指导(Native) 2 3## 概述 4 5hiTraceMeter为开发者提供系统性能打点接口。开发者通过在自己的业务逻辑中的关键代码位置调用HiTraceMeter接口提供的API接口,能够有效跟踪进程轨迹、查看系统性能。 6> **说明:** 7> 8> - 仅当开发者使用Native API开发应用时,可参考本开发指导。相关接口的详细说明请查阅[API参考](../reference/native-apis/_hitrace.md)。 9> - 如需使用ArkTS API开发应用,请查阅对应的[开发指导](hitracemeter-guidelines.md)和[API参考](../reference/apis/js-apis-hitracemeter.md)。 10 11## 接口说明 12 13| 方法 | 接口描述 | 14| -------- | -------- | 15| void OH_HiTrace_StartTrace(const char* name) | 开启一个同步时间片跟踪事件 | 16| void OH_HiTrace_FinishTrace() | 结束一个同步时间片跟踪事件 | 17| void OH_HiTrace_StartAsyncTrace(const char* name, int32_t taskId) | 开启一个异步时间片跟踪事件 | 18| void OH_HiTrace_FinishAsyncTrace(const char* name, int32_t taskId) | 结束一个异步时间片跟踪事件 | 19| void OH_HiTrace_CountTrace(const char* name, int64_t count) | 整数跟踪事件 | 20 21**参数解析** 22 23| 参数名 | 类型 | 必填 | 说明 | 24| ------ | ------ | ---- | ------------------------------------------------------------ | 25| name | string | 是 | 要跟踪的数值变量名称。 | 26| taskId | number | 是 | 用来表示关联的ID,如果有多个name相同的任务是并行执行的,则每次调用startTrace的taskId不同。 | 27| count | number | 是 | 变量的值。 | 28 29## 开发示例 30 311. 在CMakeLists.txt中新增libhitrace_ndk.z.so链接。 32 33 ``` 34 target_link_libraries(entry PUBLIC libhitrace_ndk.z.so) 35 ``` 36 372. 在源文件中引用hitrace头文件。 38 39 ```c++ 40 #include "hitrace/trace.h" 41 ``` 42 433. 在需要打点的地方进行性能打点,以异步打点为例(示例代码为默认的hello.cpp的一部分,使用时只需要按照示例的使用方法将接口-参看接口说明,放在需要的地方即可) 44 45 ```c++ 46 #include "napi/native_api.h" 47 #include "hitrace/trace.h" 48 static napi_value Add(napi_env env, napi_callback_info info) 49 { 50 // 需要开启异步时间片跟踪的地方 51 OH_HiTrace_StartAsyncTrace("hitraceTest", 123); 52 // 需要结束异步时间片跟踪的地方(此处为示例,开启点和结束点按实际需求放在需要的地方) 53 OH_HiTrace_FinishAsyncTrace("hitraceTest", 123); 54 size_t requireArgc = 2; 55 size_t argc = 2; 56 napi_value args[2] = {nullptr}; 57 58 napi_get_cb_info(env, info, &argc, args , nullptr, nullptr); 59 60 napi_valuetype valuetype0; 61 napi_typeof(env, args[0], &valuetype0); 62 63 napi_valuetype valuetype1; 64 napi_typeof(env, args[1], &valuetype1); 65 66 double value0; 67 napi_get_value_double(env, args[0], &value0); 68 69 double value1; 70 napi_get_value_double(env, args[1], &value1); 71 72 napi_value sum; 73 napi_create_double(env, value0 + value1, &sum); 74 75 return sum; 76 77 } 78 ``` 79 804. 将编译好的hap包推送到设备上安装,cmd窗口执行hdc shell连上设备后执行命令:hitrace --trace_begin app。 81 82 ```shell 83 capturing trace... 84 ``` 85 865. 设备上重复点击几次新安装的hap,然后在shell窗口dump trace查看结果,命令是:hitrace --trace_dump | grep hitraceTest。 87 88 ```shell 89 <...>-2477 (-------) [001] .... 396.427165: tracing_mark_write: S|2477|H:hitraceTest 123 90 <...>-2477 (-------) [001] .... 396.427196: tracing_mark_write: F|2477|H:hitraceTest 123 91 ```