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识别方法:
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !