OpenHarmony常用工具汇总

描述

OpenHarmony 开发过程中我们一定会面对各种开发问题,比如如何看 log,如何看系统状态,如何调试,等等。本章内容就是总结一些常用工具。

 

交叉编译工具

源码下载:OH3.1 用的 5.5,OH3.2 升级了 5.7,两者都能用:

 

wget https://releases.linaro.org/components/toolchain/binaries/latest-5/arm-linux-gnueabi/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabi.tar.xz
解压、配置好路径(这个就不细讲了,可自行百度)。  

 

GDB

源码下载:

 

wget https://mirrors.ustc.edu.cn/gnu/gdb/gdb-8.2.1.tar.gz
交叉编译:
//1. 解压工具链
tar xvf gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabi.tar.xz

//2. 解压gdb
tar zxvf gdb-8.2.1.tar.gz

//3. 进入gdb目录编译
cd gdb-8.2.1
mkdir build
cd build
../configure CC="/{gcc的路径}/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc" CXX="/{gcc的路径}/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-g++" LDFLAGS=-static --target=arm-linux-gnueabi --host=arm-linux-gnueabi
make -j16
//4. build目录下gdb/gdb就是可执行文件,可以通过file gdb查看文件类型和内容
file gdb/gdb
gdb/gdb: ELF 32-bit LSB executable, ARM, EABI5 version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.32, BuildID[sha1]=a20d29b723426dbe06a1b17f66292090f916ad21, with debug_info, not stripped

 

注意:编译后的 gdb 即可传输到设备上运行。

Valgrind

    源码下载:

wget https://sourceware.org/pub/valgrind/valgrind-3.18.0.tar.bz2
交叉编译:
//1. 解压gdb
tar jxvf valgrind-3.18.0.tar.bz2

//2. 进入valgrind目录编译
cd valgrind

//3. 防止编译文件污染源码,建立目录
mkdir build

//4. 进入编译目录
cd build
../configure CC="/{gcc的路径}/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc" CXX="{gcc的路径}/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-g++" CPP="/home/wshi/arm-toolchain/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-cpp" --target=arm-linux-gnueabi --host=arm-linux-gnueabi --prefix=/bin

make -j16

//5. build目录下coregrind/valgrind就是可执行文件,可以通过file命令查看文件类型和内容
file coregrind/valgrind
coregrind/valgrind: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 2.6.32, BuildID[sha1]=3963fa836d42fa54e0cf3c580792b777267f97eb, with debug_info, not stripped
file memcheck/memcheck-arm-linux
memcheck/memcheck-arm-linux: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, BuildID[sha1]=72fa59dfe03270faca9929d6658cb67379ad546d, with debug_info, not stripped

//6. 由于是DynamicLink,所以需要发送glib库到板子上,
hdc_std -t 192.168.137.105:10178 file send /{gcc的路径}/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabi/arm-linux-gnueabi/libc/lib/ld-2.21.so /data/local/tmp
hdc_std -t 192.168.137.105:10178 file send /{gcc的路径}/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabi/arm-linux-gnueabi/libc/lib/libc-2.21.so /data/local/tmp

//7. 发送valgrind到板子上,并发送memcheck-arm-linux到板子,放到/bin/lib/valgrind目录,如没有需要自己建目录,这样valgrind就能用了
 

 

WuKong 命令

简介:OpenHarmony 稳定性测试自动化工具,通过模拟用户行为,对 OpenHarmony 系统及应用进行稳定性压力测试。

约束条件:WuKong 在 OS3.2 系统版本后开始预置使用;OH3.1 需要自己手动编译,命令为:

 

./build.sh --product-name rk3568 --build-target wukong
编译后发到板子上运行:
wukong exec -s 10 -i 1000 -a 0.28 -t 0.72 -c 100
对应命令解释:

 

工具

Top 命令

实时查看 linux 进程运行情况的命令:

第一行:进程统计,238 个进程,一个正在执行(R,top),237 个休眠的

第二行:CPU 信息,4 核(400%),5% 用户层在用,9% 系统层在用

第三行:具体显示每个进程信息

包括:

PID:进程号

USER:进程持有用户

PR:进程优先级,数值越小优先级越高

NI:进程 Nice 值,用作优先级的修正值

VIRT:进程使用的虚拟内存

RES:进程常驻内存

SHR:进程使用的共享内存

S:进程状态:S,sleep;R,running;I,idle;

%MEM:进程使用的内存占用比

TIME+:进程占用的 CPU 总时长

ARGS:进程名

 

Tasks: 238 total,   1 running, 237 sleeping,   0 stopped,   0 zombie
  Mem:  2011776K total,  1169240K used,   842536K free,  39624704 buffers
 Swap:  1048572K total,   337664K used,   710908K free,   316444K cached
400%cpu   5%user   0%nice   9%sys 386%idle   0%iow   0%irq   0%sirq   0%host
  PID USER         PR  NI VIRT  RES  SHR S[%CPU] %MEM     TIME+ ARGS
  512 system       -3  -8 120M  32M  31M S  5.6   1.6  47:09.18 render_service
32337 root         20   0 5.7M 3.3M 2.7M R  4.3   0.1   0:02.96 top
  459 dsoftbus     20   0 3.9G 184M  32M S  2.6   9.3  13:11.60 softbus_server
  444 hidumper_se+ 20   0  13M 6.2M 6.0M S  2.6   0.3  12:53.76 hidumper_servic
  480 wifi         20   0 5.5M 2.2M 2.2M S  1.6   0.1  15:57.09 wifi_hal_service
 1548 10007         5 -15 649M 122M  94M S  0.6   6.2   1:57.38 com.ohos.screenlock
31536 root         20   0    0    0    0 I  0.3   0.0   1:12.82 [kworker/0:0-events_freezable]
 2090 20010015      5 -15 637M 132M  84M S  0.3   6.7   1:06.40 com.ohos.settings
 2049 20010035      0 -20 643M 122M  77M S  0.3   6.2   1:01.51 ohos.samples.bttest
 1532 10004         0 -20 519M  29M  27M S  0.3   1.4   0:31.95 com.ohos.mms
 1483 10005         0 -20 516M  26M  24M S  0.3   1.3   0:33.25 com.ohos.settingsdata
  436 wifi         20   0  17M 9.0M 9.0M S  0.3   0.4   0:12.66 wifi_manager_se
  233 logd         20   0 7.4M 4.0M 2.2M S  0.3   0.2   3:12.76 hilogd
32338 root          0 -20    0    0    0 I  0.0   0.0   0:00.00 [kworker/0:0H-mmc_complete]
32336 root         20   0 5.4M 2.4M 2.1M S  0.0   0.1   0:00.05 sh -
32335 root          0 -20    0    0    0 I  0.0   0.0   0:00.00 [kworker/3:1H]
32331 root          0 -20    0    0    0 I  0.0   0.0   0:00.00 [kworker/2:1H]
32327 root         20   0 5.4M 3.1M 2.8M S  0.0   0.1   0:00.06 sh -
32306 root         RT   0    0    0    0 S  0.0   0.0   0:00.01 [irq/93-dwc3]
32302 root         20   0 137M 3.9M 3.4M S  0.0   0.1   0:00.19 hdcd

 

Pmap 命令

      通过 Top 命令,我们发现 dsoftbus 虚拟内存很大,我们可以使用 Pmap 命令查看具体信息。

# pmap -x 431
431: softbus_server
Address    Kbytes     PSS   Dirty    Swap  Mode  Mapping
0000d000       8       0       0       0 -----    [anon30526]
0000f000     132       8       8       0 rw---    [anon30526]
00030000       8       0       0       0 -----    [anon30525]
00032000     132       8       8       0 rw---    [anon30525]
00053000       8       0       0       0 -----    [anon30524]
00055000     132       8       8       0 rw---    [anon30524]
00076000       8       0       0       0 -----    [anon30523]
00078000     132       8       8       0 rw---    [anon30523]
00099000       8       0       0       0 -----    [anon30522]
0009b000     132       8       8       0 rw---    [anon30522]
000bc000       8       0       0       0 -----    [anon30521]
00bd1000     132       8       8       0 rw---    [anon30440]
00bf2000       8       0       0       0 r----  sa_main
00bf4000      12       0       0       0 r-x--  sa_main
00bf7000       4       0       0       4 r----  sa_main
00bf8000       4       4       4       0 rw---  sa_main
00c02000      40      40      40       0 rw---    [anonmusl]
01dd2000       8       0       0       0 -----    [anon30309]
01dd4000     132       8       8       0 rw---    [heap]
01df5000    1660     372     364    1288 rw---    [heap]
01f9b000       8       0       0       0 -----    [anon30308]
 

 

Strace 命令

源码下载:

 

wget https://strace.io/files/5.18/strace-5.18.tar.xz
 

 

交叉编译:

 

mkdir build
cd build
../configure CC="/home/wshi/workspace/master-1014/prebuilts/gcc/linux-x86/arm/gcc-linaro-7.5.0-arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc" CXX="/home/wshi/workspace/master-1014/prebuilts/gcc/linux-x86/arm/gcc-linaro-7.5.0-arm-linux-gnueabi/bin/arm-linux-gnueabi-g++" --target=arm-linux-gnueabi --host=arm-linux-gnueabi
 

 

运行:

 

strace -f -t -p 431 -o trace.strace
   

 

Meminfo

    运行:

# cat /proc/meminfo
MemTotal:        2010244 kB
MemFree:         1158060 kB
MemAvailable:    1412556 kB
Buffers:            1384 kB
Cached:           291748 kB
SwapCached:            0 kB
Active:            41976 kB
Inactive:         525356 kB
Active(anon):        372 kB
Inactive(anon):   311204 kB
Active(file):      41604 kB
Inactive(file):   214152 kB
Active(purg):          0 kB
Inactive(purg):        0 kB
Pined(purg):           0 kB
Unevictable:       37224 kB
Mlocked:               0 kB
SwapTotal:       1048572 kB
SwapFree:        1048572 kB
Dirty:                20 kB
Writeback:             0 kB
AnonPages:        311424 kB
Mapped:           210128 kB
Shmem:             37436 kB
KReclaimable:      39700 kB
Slab:             100004 kB
SReclaimable:      39700 kB
SUnreclaim:        60304 kB
KernelStack:       17664 kB
PageTables:         7380 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     2053692 kB
Committed_AS:    5178768 kB
VmallocTotal:   262930368 kB
VmallocUsed:       28216 kB
VmallocChunk:          0 kB
Percpu:              832 kB
Skb:                   0 kB
CmaTotal:          16384 kB
CmaFree:               0 kB
GLTrack:               - kB
ZspageUsed:           12 kB
识别方法:
工具

 

  审核编辑:汤梓红

 
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分