#夏日挑战赛# OpenHarmony HiTrace在IPC通信中的应用(L2) 原创 精华
目录
简介
HiTrace主要是对于跨设备/跨进程/跨线程的业务流程,通过相同的traceid在整个业务流程中传递,将流程处理过程中的调用关系、各种输出信息关联和展现出来,帮助使用者分析、定位问题和系统调优。此文章以OpenHarmony 3.1代码基础, 以IPC进程通信中的HiTrace应用介绍HiTrace的使用和数据流转。
- HiTrace在IPC通信中的应用介绍。
- HiTrace在IPC通信中应用示例。
- HiTrace在IPC中的数据流介绍。
- 本用例开发板(3516开发板:HiSpark_AI_Hi3516D_One_Light_VER.B开发板上测试)
HiTrace在IPC通信中的应用介绍。
IPC通信的框架代码中:
客户端的发送接收数据地方已经有 tranceId发送到服务端以及发送和接收数据的跟踪日志代码。
服务端的接收回复数据地方已经有 获取传递过来的tranceId以及接收和发送数据的跟踪日志代码。
我们只需要在要跟踪的代码块前添加HiTrace::Begin, 代码块后添加HiTrace::End即可。
抓取跟踪日志:hilog | grep HiTraceC
查看数据的发送和接收日志。
- 源代码开发 在类定义头文件或者类实现源文件中,包含hitrace头文件:
- 在业务类实现源文件中使用(启动/结束跟踪):
- 跟踪日志(IPC框架中已经实现,不用实现)
- 编译设置,在BUILD.gn里增加子系统SDK依赖:
HiTrace在IPC通信中应用示例。
子系统配置
build\subsystem_config.json
产品配置
productdefine\common\products\Hi3516DV300.json
代码
代码目录结构
myapptest放在代码根目录,代码见附件
服务ID的添加
服务ID有统一的头文件
foundation\distributedschedule\samgr\interfaces\innerkits\samgr_proxy\include\system_ability_definition.h
编译
编译
和把编译结果文件发送到开发板
,修改权限
参考OpenHarmony 实现的一个IPC的客户端和服务端, 代码基于这个文档的代码修改添加。
测试
终端1:抓取日志
图中白色部分是一次完整的客户端和服务端交互流程, 每一个begin和end之间tranceid相同,每一次完整的交互spanid一样。CS:客户端发送数据,CR:客户端接收数据,SR:服务端接收数据,SS:服务端发送数据。
终端2:启动服务
终端3:启动客户端
HiTrace在IPC中的数据流介绍
入口函数文件:
foundation\communication\ipc\ipc\native\src\mock\source\binder_invoker.cpp
IPC客户端发收数据入口:
服务端收发数据入口:
这里只对IPC数据交互的客户端和服务端总入口进行简单注释。要对IPC框架了解,需要结合OpenHarmony IPC通信(L2)进行代码分析学习。
很详细的讲解!
虽然看不懂,但还是感觉很牛的样子。
大佬优秀啊
666
大佬优秀啊
很不错,赞起!