系统稳定性调试笔记

手动抓取进程的Backtrace方法如下:
adb remount
adb shellchmod 0777 data/anr
adb shellkill -3 pid
adb pull/data/anr

内存:
adb shell cat proc/meminfo
adb shell cat proc/pid/maps
adb shell cat proc/pid/smaps
adb shell procrank
adb shell procmem pid
adb shell dumpsys meminfo pid

arm-linux-androideabi-addr2line -f -C -e symbols address 解析抓回的Native Backtrace, 从而知道当时正在执行的native 代码
Kernel Backtrace抓取:
adb shell cat proc/kmsg > kmsg.txt
adb shell "echo 8 > proc/sys/kernel/printk“ //修改printk loglevel
adb shell "echo t > /proc/sysrq-trigger“ //打印所有的backtrace
adb shell "echo w > /proc/sysrq-trigger“//打印’-D’ status ‘D’ 的 process

Monitor
进入区(Entrt Set):表示线程通过synchronized要求获取对象的锁
拥有者(The Owner):表示某一线程成功竞争到对象锁。
等待区(Wait Set):表示线程通过对象的wait方法,释放对象的锁,并在等待区等待被唤醒。
同一时刻Monitor 只能被一个线程拥有,该线程就是 “Active Thread”,而其它线程都是 “Waiting Thread”,分别在两个队列 “ Entry Set”和 “Wait Set”里面等候。在 “Entry Set”中等待的线程状态是 “Waiting for monito

你可能感兴趣的:(android,系统源码学习)