# C++代码配置trace打点数据

#### 问题现象

在C++项目开发过程中，如何配置trace打点数据？

#### 背景知识

开发者可以在代码中调用HiTraceMeter接口进行trace打点，然后使用hitrace命令行工具获取程序运行时产生的打点信息，从而了解程序运行的进程、线程、时间戳、cpu等信息。以帮助开发者进行问题分析和性能调优等活动。HiTraceMeter提供ArkTS和C/C++两种接口，按需选择。

*   使用HiTraceMeter跟踪性能（ArkTS）
*   使用HiTraceMeter跟踪性能（C/C++）

#### 解决方案

OH\_HiTrace\_StartTrace用于标记一个同步跟踪耗时任务的开始。同步跟踪打点接口OH\_HiTrace\_StartTrace和OH\_HiTrace\_FinishTrace必须配对使用。

OH\_HiTrace\_StartAsyncTrace标记一个异步跟踪耗时任务的开始。用于在异步操作前调用进行开始打点，异步跟踪开始和结束数据由于不是顺序发生的，所以解析时需要通过一个唯一的taskId进行识别。必须和OH\_HiTrace\_FinishAsyncTrace配对使用，参数name和taskId相同的开始与结束打点相匹配，构成一个异步跟踪耗时任务。

*   OH\_HiTrace\_StartTrace和OH\_HiTrace\_FinishTrace配套使用，要用cpu insight才能看到trace信息。
    
*   OH\_HiTrace\_StartAsyncTrace和OH\_HiTrace\_FinishAsyncTrace配套使用，time insight和cpu insight都可以看到trace信息。
    
*   如果是配合ArkTS/Native排查函数耗时，用OH\_HiTrace\_StartAsyncTrace和OH\_HiTrace\_FinishAsyncTrace进行打点，然后使用Profiler的Time Insight模板就可以看到。
    
*   运行hitrace打点，要在这里添加libhitrace\_ndk.z.so。
    

#### 总结

HiTraceMeter提供系统性能打点接口。开发者通过在关键代码位置调用HiTraceMeter接口提供的API接口，能够有效跟踪进程轨迹、查看系统性能。

HiTraceMeter通过应用程序的打点操作收集数据，这些数据通过内核sysfs文件接口进入内核的ftrace数据缓冲区。随后，使用hitrace命令行工具可以读取这些数据，并将其输出到设备侧的文件中。

通过使用HiTraceMeter，开发者可以获得有价值的性能数据，从而帮助他们优化应用的性能和响应速度。