6

#夏日挑战赛# OpenHarmony HiSysEvent打点调用实践(L2)-开源基础软件社区-51CTO.COM

 2 years ago
source link: https://ost.51cto.com/posts/13848
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

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

设备开发,通常的问题分析主要靠日志记录,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
同步硬件时钟: hwclock -w
查询时间: date
  • 终端1:实时查看tag为HisysEvTest的打点消息
hisysevent -r -t HisysEvTest
  • 终端2:执行测试打点的应用
/data/test/hisyseventTest
  • 终端3:查看存储的打点消息
hisysevent -l
#夏日挑战赛# OpenHarmony HiSysEvent打点调用实践(L2)-开源基础软件社区
#夏日挑战赛# OpenHarmony HiSysEvent打点调用实践(L2)-开源基础软件社区

事件数据格式配置


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK