Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
c8fc70b9
D
Docs
项目概览
OpenHarmony
/
Docs
大约 1 年 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
c8fc70b9
编写于
10月 12, 2022
作者:
H
hw-wLiu
提交者:
Gitee
10月 12, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update zh-cn/device-dev/subsystems/subsys-dfx-hitracemeter.md.
Signed-off-by:
N
hw-wLiu
<
liuwei573@huawei.com
>
上级
73e307cc
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
124 addition
and
124 deletion
+124
-124
zh-cn/device-dev/subsystems/subsys-dfx-hitracemeter.md
zh-cn/device-dev/subsystems/subsys-dfx-hitracemeter.md
+124
-124
未找到文件。
zh-cn/device-dev/subsystems/subsys-dfx-hitracemeter.md
浏览文件 @
c8fc70b9
...
@@ -135,140 +135,140 @@ C++接口仅系统开发者使用,JS(目前暂未开放js接口)应用开
...
@@ -135,140 +135,140 @@ C++接口仅系统开发者使用,JS(目前暂未开放js接口)应用开
## 开发步骤
## 开发步骤
  
1.编译依赖添加,需要修改的编译配置文件base
\h
iviewdfx
\h
itrace
\c
md
\B
UILD.gn 。
1.
编译依赖添加,需要修改的编译配置文件base
\h
iviewdfx
\h
itrace
\c
md
\B
UILD.gn 。
```
```
external_deps = [ "hitrace_native:hitrace_meter"]
external_deps = [ "hitrace_native:hitrace_meter"]
```
```
  
2.头文件依赖添加。
2.
头文件依赖添加。
```
```
#include "hitrace_meter.h"//接口函数定义头文件
#include "hitrace_meter.h"//接口函数定义头文件
```
```
  
3.接口调用示例。
3.
接口调用示例。
```
cpp
```
cpp
#include "hitrace_meter.h" // 包含hitrace_meter.h
#include "hitrace_meter.h" // 包含hitrace_meter.h
using
namespace
std
;
using
namespace
std
;
int
main
()
{
uint64_t
label
=
BYTRACE_TAG_OHOS
;
sleep
(
1
);
CountTrace
(
label
,
"count number"
,
2000
);
// 整数跟踪
StartTrace
(
label
,
"func1Trace"
,
-
1
);
// func1Start的跟踪起始点
sleep
(
1
);
StartTrace
(
label
,
"func2Trace"
,
-
1
);
// func2Start的跟踪起始点
sleep
(
2
);
FinishTrace
(
label
);
// func2Trace的结束点
sleep
(
1
);
FinishTrace
(
label
);
// func1Trace的结束点
sleep
(
1
);
CountTrace
(
label
,
"count number"
,
3000
);
// 整数跟踪
StartAsyncTrace
(
label
,
"asyncTrace1"
,
1234
);
// 异步asyncTrace1的开始点
sleep
(
1
);
StartAsyncTrace
(
label
,
"asyncTrace2"
,
3456
);
// 异步asyncTrace2的开始点
StartAsyncTrace
(
label
,
"asyncTrace3"
,
5678
);
// 异步asyncTrace3的开始点
sleep
(
1
);
FinishAsyncTrace
(
label
,
"asyncTrace3"
,
5678
);
// 异步asyncTrace3的结束点
sleep
(
1
);
FinishAsyncTrace
(
label
,
"asyncTrace1"
,
1234
);
// 异步asyncTrace1的结束点
sleep
(
1
);
FinishAsyncTrace
(
label
,
"asyncTrace2"
,
3456
);
// 异步asyncTrace2的结束点
return
0
;
}
int
main
()
```
{
uint64_t
label
=
BYTRACE_TAG_OHOS
;
sleep
(
1
);
CountTrace
(
label
,
"count number"
,
2000
);
// 整数跟踪
StartTrace
(
label
,
"func1Trace"
,
-
1
);
// func1Start的跟踪起始点
sleep
(
1
);
StartTrace
(
label
,
"func2Trace"
,
-
1
);
// func2Start的跟踪起始点
sleep
(
2
);
FinishTrace
(
label
);
// func2Trace的结束点
sleep
(
1
);
FinishTrace
(
label
);
// func1Trace的结束点
sleep
(
1
);
CountTrace
(
label
,
"count number"
,
3000
);
// 整数跟踪
StartAsyncTrace
(
label
,
"asyncTrace1"
,
1234
);
// 异步asyncTrace1的开始点
sleep
(
1
);
StartAsyncTrace
(
label
,
"asyncTrace2"
,
3456
);
// 异步asyncTrace2的开始点
StartAsyncTrace
(
label
,
"asyncTrace3"
,
5678
);
// 异步asyncTrace3的开始点
sleep
(
1
);
FinishAsyncTrace
(
label
,
"asyncTrace3"
,
5678
);
// 异步asyncTrace3的结束点
sleep
(
1
);
FinishAsyncTrace
(
label
,
"asyncTrace1"
,
1234
);
// 异步asyncTrace1的结束点
sleep
(
1
);
FinishAsyncTrace
(
label
,
"asyncTrace2"
,
3456
);
// 异步asyncTrace2的结束点
return
0
;
}
```
  
4.
使用方法,打点编译部署完成后,运行下面命令行来抓取Trace。然后在端侧shell里运行应用,可以抓取到Trace数据。
4.
使用方法,打点编译部署完成后,运行下面命令行来抓取Trace。然后在端侧shell里运行应用,可以抓取到Trace数据。
```
```
hdc_std shell hitrace -t 10 ohos > .\myapp_demo.ftrace
hdc_std shell hitrace -t 10 ohos > .\myapp_demo.ftrace
```
```
  
抓取之后的数据可以在smartperf中"Open trace file"或者直接拖入图形区打开,关于smartperf的详细介绍可查看
[
smartperf
](
https://toscode.gitee.com/openharmony-sig/smartperf
)
。
抓取之后的数据可以在smartperf中"Open trace file"或者直接拖入图形区打开,关于smartperf的详细介绍可查看
[
smartperf
](
https://toscode.gitee.com/openharmony-sig/smartperf
)
。
## 调测验证
## 调测验证
以下为一个demo调试过程,该demo使用了同步接口中的StartTrace和FinishTrace。
以下为一个demo调试过程,该demo使用了同步接口中的StartTrace和FinishTrace。
  
1.编写测试代码hitrace_example.cpp(
[
hitrace_example.cpp
](
https://gitee.com/openharmony/hiviewdfx_hitrace/blob/master/cmd/example/hitrace_example.cpp
)
),将使用到的接口加入代码:
1.
编写测试代码hitrace_example.cpp(
[
hitrace_example.cpp
](
https://gitee.com/openharmony/hiviewdfx_hitrace/blob/master/cmd/example/hitrace_example.cpp
)
),将使用到的接口加入代码:
```
cpp
int
main
()
{
thread
t1
(
ThreadFunc1
);
t1
.
join
();
StartTrace
(
LABEL
,
"testStart"
);
sleep
(
SLEEP_ONE_SECOND
);
StartTrace
(
LABEL
,
"funcAStart"
,
SLEEP_ONE_SECOND
);
// 打印起始点
FuncA
();
FinishTrace
(
LABEL
);
sleep
(
SLEEP_TWO_SECOND
);
thread
t2
(
ThreadFunc2
);
t2
.
join
();
StartTrace
(
LABEL
,
"funcBStart"
,
SLEEP_TWO_SECOND
);
FuncB
();
FinishTrace
(
LABEL
);
// 打印结束点
sleep
(
SLEEP_TWO_SECOND
);
sleep
(
SLEEP_ONE_SECOND
);
```
cpp
FinishTrace
(
LABEL
);
int
main
()
FuncC
();
{
thread
t1
(
ThreadFunc1
);
return
0
;
t1
.
join
();
}
```
StartTrace
(
LABEL
,
"testStart"
);
sleep
(
SLEEP_ONE_SECOND
);
  
2.修改gn编译文件并编译,编译配置文件路径base
\h
iviewdfx
\h
itrace
\c
md
\B
UILD.gn 。
StartTrace
(
LABEL
,
"funcAStart"
,
SLEEP_ONE_SECOND
);
// 打印起始点
```
FuncA
();
ohos_executable("hitrace_example") {
FinishTrace
(
LABEL
);
sources = [ "example/hitrace_example.cpp" ]
sleep
(
SLEEP_TWO_SECOND
);
external_deps = [ "hitrace_native:hitrace_meter" ]
thread
t2
(
ThreadFunc2
);
t2
.
join
();
subsystem_name = "hiviewdfx"
part_name = "hitrace_native"
StartTrace
(
LABEL
,
"funcBStart"
,
SLEEP_TWO_SECOND
);
}
FuncB
();
FinishTrace
(
LABEL
);
// 打印结束点
group("hitrace_target") {
sleep
(
SLEEP_TWO_SECOND
);
deps = [
":hitrace",
sleep
(
SLEEP_ONE_SECOND
);
":hitrace_example",
FinishTrace
(
LABEL
);
]
FuncC
();
}
```
return
0
;
}
  
3.将编译出来的hitrace_example可执行文件放到设备中的/system/bin目录下,在shell中执行hitrace_example。
```
```
2.
修改gn编译文件并编译,编译配置文件路径base
\h
iviewdfx
\h
itrace
\c
md
\B
UILD.gn 。
<...>-1651 (-------) [002] .... 327.194136: tracing_mark_write: S|1650|H:testAsync 111
<...>-1650 (-------) [001] .... 332.197640: tracing_mark_write: B|1650|H:testStart
```
<...>-1650 (-------) [001] .... 333.198018: tracing_mark_write: B|1650|H:funcAStart
ohos_executable("hitrace_example") {
<...>-1650 (-------) [001] .... 334.198507: tracing_mark_write: E|1650|
sources = [ "example/hitrace_example.cpp" ]
<...>-1654 (-------) [003] .... 341.201673: tracing_mark_write: F|1650|H:testAsync 111
<...>-1650 (-------) [001] .... 341.202168: tracing_mark_write: B|1650|H:funcBStart
external_deps = [ "hitrace_native:hitrace_meter" ]
<...>-1650 (-------) [001] .... 343.202557: tracing_mark_write: E|1650|
<...>-1650 (-------) [001] .... 346.203178: tracing_mark_write: E|1650|
subsystem_name = "hiviewdfx"
<...>-1650 (-------) [001] .... 346.203457: tracing_mark_write: C|1650|H:count number 1
part_name = "hitrace_native"
<...>-1650 (-------) [001] .... 347.203818: tracing_mark_write: C|1650|H:count number 2
}
<...>-1650 (-------) [001] .... 348.204207: tracing_mark_write: C|1650|H:count number 3
<...>-1650 (-------) [001] .... 349.204473: tracing_mark_write: C|1650|H:count number 4
group("hitrace_target") {
<...>-1650 (-------) [001] .... 350.204851: tracing_mark_write: C|1650|H:count number 5
deps = [
<...>-1655 (-------) [001] .... 365.944658: tracing_mark_write: trace_event_clock_sync: realtime_ts=1502021460925
":hitrace",
<...>-1655 (-------) [001] .... 365.944686: tracing_mark_write: trace_event_clock_sync: parent_ts=365.944641
":hitrace_example",
```
]
}
```
3.
将编译出来的hitrace_example可执行文件放到设备中的/system/bin目录下,在shell中执行hitrace_example。
```
<...>-1651 (-------) [002] .... 327.194136: tracing_mark_write: S|1650|H:testAsync 111
<...>-1650 (-------) [001] .... 332.197640: tracing_mark_write: B|1650|H:testStart
<...>-1650 (-------) [001] .... 333.198018: tracing_mark_write: B|1650|H:funcAStart
<...>-1650 (-------) [001] .... 334.198507: tracing_mark_write: E|1650|
<...>-1654 (-------) [003] .... 341.201673: tracing_mark_write: F|1650|H:testAsync 111
<...>-1650 (-------) [001] .... 341.202168: tracing_mark_write: B|1650|H:funcBStart
<...>-1650 (-------) [001] .... 343.202557: tracing_mark_write: E|1650|
<...>-1650 (-------) [001] .... 346.203178: tracing_mark_write: E|1650|
<...>-1650 (-------) [001] .... 346.203457: tracing_mark_write: C|1650|H:count number 1
<...>-1650 (-------) [001] .... 347.203818: tracing_mark_write: C|1650|H:count number 2
<...>-1650 (-------) [001] .... 348.204207: tracing_mark_write: C|1650|H:count number 3
<...>-1650 (-------) [001] .... 349.204473: tracing_mark_write: C|1650|H:count number 4
<...>-1650 (-------) [001] .... 350.204851: tracing_mark_write: C|1650|H:count number 5
<...>-1655 (-------) [001] .... 365.944658: tracing_mark_write: trace_event_clock_sync: realtime_ts=1502021460925
<...>-1655 (-------) [001] .... 365.944686: tracing_mark_write: trace_event_clock_sync: parent_ts=365.944641
```
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录