android 系统系统负载查看
dumpsys cpuinfo
cat /proc/stat
CPU (user, nice, system, idle, iowait, irq, softirq, stealstolen, guest);
user(): 表示从系统启动开始至今处于用户态的运行时间,注意不包含 nice 值为负的进程。
nice() :表示从系统启动开始至今nice 值为负的进程所占用的 CPU 时间。
system(): 表示从系统启动开始至今处于内核态的运行时间。
idle() :表示从系统启动开始至今除 IO 等待时间以外的其他等待时间。
iowait():表示从系统启动开始至今的IO 等待时间。(从Linux V2.5.41开始包含)
irq():表示从系统启动开始至今的硬中断时间。(从Linux V2.6.0-test4开始包含)
softirq():表示从系统启动开始至今的软中断时间。(从Linux V2.6.0-test4开始包含)
stealstolen(0) :表示当在虚拟化环境中运行时在其他操作系统中所花费的时间。在Android系统下此值为0。
guest(0) :表示当在Linux内核的控制下为其它操作系统运行虚拟CPU所花费的时间。在Android系统下此值为0。(从 V2.6.24开始包含)
打开开发者模式下oemlock,
要先将手机unlock:
①adb reboot bootLoader
②fastboot flashing unlock
③按下键(终端会提示(bootloader) Start unlock flow)
④成功后会进入下个界面 可以 fastboot reboot或者直接断电重启
2、adb root
3、adb remount -R
remount -R 失败说明还没有unlock,
remount -R 成功会重启。
3、adb root && adb remount(提示成功)
二,调试ELF可执行程序
查看这个可执行程序的编译依赖信息
readelf -l xxx readelf -d xxx
1. 通过coredump查看调用栈(前提应用程序是 -g 编译出来的)
echo “/data/core/core-%e-%p-%t” > /proc/sys/kernel/core_pattern
ulimit -c unlimited
gdb [exec file] [core file]
~/workspace/source/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-gnu/bin/aarch64-linux-gnu-gdb hello core-hello-5454-1546945377
2.动态库中
使用Android studio开发的c/c++库程序,生成的so自带符号表,所以使用addr2line工具可以直接定位。
#00 pc 000000000000f0d8 /data/app/~~0StNz_c6FicXDPuX4eo5DQ==/com.adayo.myapp-eZNn5iBFQqX-TkUCrAgdyg==/base.apk!libmyapp.so (fun_d()+48) (BuildId: fbbcdcfd64b479c759bca5116eec60c6cebaa363)
#01 pc 000000000000f0f0 /data/app/~~0StNz_c6FicXDPuX4eo5DQ==/com.adayo.myapp-eZNn5iBFQqX-TkUCrAgdyg==/base.apk!libmyapp.so (fun_c()+8) (BuildId: fbbcdcfd64b479c759bca5116eec60c6cebaa363)
#02 pc 000000000000f104 /data/app/~~0StNz_c6FicXDPuX4eo5DQ==/com.adayo.myapp-eZNn5iBFQqX-TkUCrAgdyg==/base.apk!libmyapp.so (fun_b()+8) (BuildId: fbbcdcfd64b479c759bca5116eec60c6cebaa363)
#03 pc 000000000000ed08 /data/app/~~0StNz_c6FicXDPuX4eo5DQ==/com.adayo.myapp-eZNn5iBFQqX-TkUCrAgdyg==/base.apk!libmyapp.so (fun_a()+8) (BuildId: fbbcdcfd64b479c759bca5116eec60c6cebaa363)
#04 pc 000000000000ece8 /data/app/~~0StNz_c6FicXDPuX4eo5DQ==/com.adayo.myapp-eZNn5iBFQqX-TkUCrAgdyg==/base.apk!libmyapp.so (childCallback(void*)+48) (BuildId: fbbcdcfd64b479c759bca5116eec60c6cebaa363)
#05 pc 00000000000b1690 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+204) (BuildId: b49025cc9efc1955a539cd11a81ddf77)
#06 pc 00000000000510ac /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: b49025cc9efc1955a539cd11a81ddf77)
<aarch64-linux-android-addr2line> -e <共享库> <pc值> -s
C:\Users\用户名\AppData\Local\Android\Sdk\ndk\21.4.7075529\toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86_64\bin\aarch64-linux-android-addr2line.exe -e libmyapp.so 000000000000f0d8 -s
三,查看文件
Linux 查看占用文件的进程 lsof <文件名>
# lsof /mnt/user/0/emulated/0/DCIM/Camera/VID_20220524_171544.mp4
Linux查看进程占用的文件 ls -l /proc/<进程号>/fd