#夏日挑战赛# OpenHarmony HiSysEvent打点调用实践(L2) 原创 精华

碼磚民工
发布于 2022-6-20 14:06
浏览
7收藏

「本文正在参加星光计划3.0–夏日挑战赛」

@toc

简介

设备开发,通常的问题分析主要靠日志记录,OpenHarmony的日志记录分很多种,我们用的最多的是Hilog。
此文章以OpenHarmony 3.1代码基础,介绍另外一种记录: 事件打点(HiSysEvent)。

  • 打点源码分析
  • 打点在代码中应用
  • 打点测试工程的编译配置
  • 打点测试操作步骤
  • 本用例开发板(3516开发板:HiSpark_AI_Hi3516D_One_Light_VER.B开发板上测试)

打点源码

主要的源码目录

打点调用库目录:base\hiviewdfx\hisysevent\interfaces\native\innerkits\hisysevent
打点信息搜集存储进程:base\hiviewdfx\hiview
打点测试进程(自己添加):myapp\hisysevent_test 源码见附件

测试进程和信息搜集进程流程

#夏日挑战赛# OpenHarmony HiSysEvent打点调用实践(L2)-鸿蒙开发者社区

  • 打点调用进程通过套接字,发送打点信息。
  • hiview进程通过套接字接收打点信息,进行处理存储。
  • 事件处理插件配置的初始化读取
    1.事件是否通过线程来处理的配置:system\etc\hiview\plugin_config,解析函数Plugin::BindWorkLoop
    2.事件格式的配置:system\etc\hiview\hisysevent.def,解析函数SysEventService::OnLoad。hisysevent.def中没有定义的事件,不会存储在/data/log/LogService/sys_event_db/hisysevent.db中。
  • 接收数据的处理
    1.插件初始化的配置中配置了线程来处理,则接收消息会调用EventLoop::AddEvent进行处理存储。
    2.插件初始化的配置中未配置线程处理,则接收消息会调用Pipeline::ProcessEvent进行处理存储。

测试工程配置

代码目录结构

#夏日挑战赛# OpenHarmony HiSysEvent打点调用实践(L2)-鸿蒙开发者社区
源码见附件

子系统配置

build\subsystem_config.json

 "myapp": {
    "path":"myapp",
    "name": "myapp"
  }

#夏日挑战赛# OpenHarmony HiSysEvent打点调用实践(L2)-鸿蒙开发者社区

产品配置

productdefine\common\products\Hi3516DV300.json

"myapp:hisysevent_test":{}

#夏日挑战赛# OpenHarmony HiSysEvent打点调用实践(L2)-鸿蒙开发者社区

事件domain配置(myapp源文件不包含,需要学习者自行配置)

base\hiviewdfx\hisysevent\interfaces\native\innerkits\hisysevent\include\hisysevent.h

static constexpr char HISYSEVENTTEST[] = "HISYSEVENTTEST";

#夏日挑战赛# OpenHarmony HiSysEvent打点调用实践(L2)-鸿蒙开发者社区

bundle.json配置

#夏日挑战赛# OpenHarmony HiSysEvent打点调用实践(L2)-鸿蒙开发者社区

格式定义和打点调用对比

#夏日挑战赛# OpenHarmony HiSysEvent打点调用实践(L2)-鸿蒙开发者社区

编译

  1. 全量编译:./build.sh --product-name Hi3516DV300 --ccache
    需要全量编译,才能将myapp\hisysevent_test\hisysevent_test.yaml的打点格式编译到hisysevent.def中去。
  2. 测试工程编译:./build.sh --product-name Hi3516DV300 --ccache --build-target hisyseventTest

测试

  • 修改开发板的读写权限
进入终端:hdc_std.exe shell
修改权限:mount -o remount,rw /
添加test目录:mkdir /data/test/

#夏日挑战赛# OpenHarmony HiSysEvent打点调用实践(L2)-鸿蒙开发者社区

  • 将编译文件发送到开发板对应目录:
测试应用:hdc_std.exe file send Z:\L2.31\out\hi3516dv300\myapp\hisysevent_test\hisyseventTest /data/test/
打点信息格式文件:hdc_std.exe file send Z:\L2.31\out\hi3516dv300\packages\phone\system\etc\hiview\hisysevent.def /system/etc/hiview/

#夏日挑战赛# OpenHarmony HiSysEvent打点调用实践(L2)-鸿蒙开发者社区
注意:如果hisysevent_test.yaml没有编入hisysevent.def,则需要去掉–ccache参数重新进行全量编译

  • 修改打点测试应用的执行权限
切到对应的目录:cd /data/test/
修改成可执行:chmod 0755 hisyseventTest
  • 修改系统时间,便于查看打点消息
修改系统时间搓: date 2022-06-21 或 date -D "YYYY-MM-DD hh:mm:ss" "2022-08-11 15:17:35"
同步硬件时钟: hwclock -w
查询时间: date
  • 终端1:实时查看tag为HisysEvTest的打点消息
hisysevent -r -t HisysEvTest
  • 终端2:执行测试打点的应用
/data/test/hisyseventTest
  • 终端3:查看存储的打点消息
hisysevent -l

#夏日挑战赛# OpenHarmony HiSysEvent打点调用实践(L2)-鸿蒙开发者社区
#夏日挑战赛# OpenHarmony HiSysEvent打点调用实践(L2)-鸿蒙开发者社区
事件数据格式配置

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
myapp.rar 2.27K 14次下载
打点代码分析.ppt 139K 10次下载
已于2022-11-18 10:59:28修改
10
收藏 7
回复
举报
5条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

学到了新的问题解决思路。

2
回复
2022-6-20 14:22:20
挖墙脚的农民工
挖墙脚的农民工

牛叉,大神,求带

3
回复
2022-6-21 08:43:06
民之码农
民之码农

666

2
回复
2022-6-22 18:54:42
民之码农
民之码农

很不错,赞起!

2
回复
2022-6-22 18:55:00
民之码农
民之码农

牛叉,大神,求带

2
回复
2022-6-23 08:11:04
回复
    相关推荐