未验证 提交 3b2abd1e 编写于 作者: H hw-wLiu 提交者: Gitee

update zh-cn/device-dev/subsystems/subsys-dfx-hitracemeter.md.

Signed-off-by: Nhw-wLiu <liuwei573@huawei.com>
上级 60d3db15
......@@ -12,7 +12,7 @@ HiTraceMeter系统主要分为三部分:
- (2)Trace数据采集命令行工具;
- (3)Trace数据图形分析工具。
其中,前两者运行在设备端侧,图形工具运行在PC主机侧。打点API部分提供了C++和JS接口,供开发过程中打点使用,打点是产生Trace数据流,是Trace的基础条件。命令行工具用于采集Trace数据,用来抓取trace数据流并保存到文本文件。Trace数据分析可以在图形工具中人工分析,也可以使用分析脚本自动化分析,Trace分析工具以Trace命令行工具的采集结果数据文件为输入。
其中,前两者运行在设备端侧,图形工具运行在PC主机侧。打点API部分提供了C++和JS接口,供开发过程中打点使用,打点是产生Trace数据流,是Trace的基础条件。命令行工具用于采集Trace数据,用来抓取Trace数据流并保存到文本文件。Trace数据分析可以在图形工具中人工分析,也可以使用分析脚本自动化分析,Trace分析工具以Trace命令行工具的采集结果数据文件为输入。
HiTraceMeter跟踪数据使用类别分类,称作Trace Tag或Trace Category,一般一个端侧软件子系统对应一个Tag。该Tag在打点API中以类别Tag参数传入。Trace命令行工具采集跟踪数据时,只采集给定的Tag类别选项指定的跟踪数据。应用程序跟踪数据类别都是属于APP Tag,从而JS接口不需要输入tag参数,内部实现用的是TAG_APP。目前HiTraceMeter支持的预定义的子系统Tag宏定义列表如下(可在hitrace_meter.h中查看):
```
......@@ -77,7 +77,7 @@ HiTraceMeter主要提供抓取用户态和内核态trace数据的命令行工具
## 约束与限制
HiTraceMeter所有功能与接口的实现都依赖于内核提供的ftrace功能,ftrace 是内核提供的一个 framework,采用 plugin 的方式支持开发人员添加更多种类的 trace 功能,因此使用HiTraceMeter之前要使能 ftrace,否则HiTraceMeter的功能无法使用(目前大部分Linux内核默认使能了ftrace,关于trace的详细介绍可查看内核ftrace相关资料)。
HiTraceMeter所有功能与接口的实现都依赖于内核提供的ftrace功能,ftrace 是内核提供的一个 framework,采用 plugin 的方式支持开发人员添加更多种类的 trace 功能,因此使用HiTraceMeter之前要使能 ftrace,否则HiTraceMeter的功能无法使用(目前大部分Linux内核默认使能了ftrace,关于ftrace的详细介绍可查看内核ftrace相关资料)。
......@@ -95,7 +95,7 @@ HiTraceMeter分为JS/C++应用打点API与数据采集命令行工具hitrace,
### 接口说明
C++接口仅系统开发者使用,JS(目前暂未开放js接口)应用开发者可以略过本节。L2上接口描述如下(hitrace.h):
C++接口仅系统开发者使用,JS(目前暂未开放js接口)应用开发者可以略过本节。L2上接口描述如下(hitrace_meter.h):
**表 1** 同步接口
......@@ -122,11 +122,11 @@ C++接口仅系统开发者使用,JS(目前暂未开放js接口)应用开
异步接口StartAsyncTrace和FinishAsyncTrace的跟踪数据匹配时,使用参数中的value和taskId配对匹配,可以不按顺序使用,主要用于异步场景。在C++程序中,使用异步跟踪的场景很少。
接口中参数解释如下:
- (1)label: trace category;
- (1)label: Trace category;
- (2)name: Trace的名称,IDE中会以此字段展示这段Trace;
- (3)value: Trace携带的信息,表明当前的某种状态,例如内存大小,队列长短等;
- (4)taskId:异步Trace中用来表示关联的ID。同步trace是不需要这个值的,因为同步trace是栈结构,很容易判断trace的起始关联关系,但是异步trace需要一个ID来表示这个关系;
- (5)在抓取Trace数据的时候,可以使用hitrace -l命令来检查当前系统中存在的trace category,只输出指定tag的数据。
- (4)taskId:异步Trace中用来表示关联的ID。同步Trace是不需要这个值的,因为同步Trace是栈结构,很容易判断Trace的起始关联关系,但是异步Trace需要一个ID来表示这个关系;
- (5)在抓取Trace数据的时候,可以使用hitrace -l命令来检查当前系统中存在的Trace category,只输出指定tag的数据。
### 开发流程
......@@ -178,7 +178,7 @@ external_deps = [ "hitrace_native:hitrace_meter"]
}
打点编译部署完成后,运行下面命令行来抓取trace。然后在端侧shell里运行应用,可以抓取到Trace数据。
打点编译部署完成后,运行下面命令行来抓取Trace。然后在端侧shell里运行应用,可以抓取到Trace数据。
hdc_std shell hitrace -t 10 ohos > .\myapp_demo.ftrace
抓取之后的数据可以在smartperf中"Open trace file"或者直接拖入图形区打开。
......@@ -298,32 +298,32 @@ HiTraceMeter提供了可执行的二进制程序hitrace用于抓取内核运行
- 设置4M缓存,抓取10秒,抓取label为ability的trace信息。
```
hitrace -b 4096 -t 10 --overwrite ability > /data/mytrace.ftrace
hitrace -b 4096 -t 10 --overwrite ability > /data/log/mytrace.ftrace
```
- 设置trace的输出时钟为mono。
```
hitrace --trace_clock mono -b 4096 -t 10 --overwrite ability > /data/mytrace.ftrace
hitrace --trace_clock mono -b 4096 -t 10 --overwrite ability > /data/log/mytrace.ftrace
```
- 抓取trace后进行压缩。
```
hitrace -z -b 4096 -t 10 --overwrite ability > /data/mytrace.ftrace
hitrace -z -b 4096 -t 10 --overwrite ability > /data/log/mytrace.ftrace
```
# 常见问题
### trace抓数据不全或者没抓到数据
### hitrace抓数据不全或者没抓到数据
#### 现象描述
执行trace命令抓数据不全或者没抓到数据
执行hitrace命令抓数据不全或者没抓到数据
#### 解决方法
......@@ -333,5 +333,5 @@ HiTraceMeter提供了可执行的二进制程序hitrace用于抓取内核运行
# 参考
更多关于hitrace的详细内容请参考:[hiviewdfx_hitrace: A Lightweight Distributed Tracing | 轻量级的分布式调用链跟踪 (gitee.com)](https://gitee.com/openharmony/hiviewdfx_hitrace)
更多关于hitrace_meter的详细内容请参考:[hiviewdfx_hitrace: A Lightweight Distributed Tracing | 轻量级的分布式调用链跟踪 (gitee.com)](https://gitee.com/openharmony/hiviewdfx_hitrace)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册