Android log
实时log
1. 抓取应用程序的日志。
# adb logcat -b main -v threadtime > /sdcard/main.log
2. 抓取跟 radio/telephony 相关的信息。
# adb logcat -b radio -v threadtime > /sdcard/radio.log
3. 抓取系统事件日志,如触屏事件。
# adb logcat -b events -v threadtime > /sdcard/events.log
4. 抓取kernel log。
# adb logcat -b kernel > /sdcard/kernel.log
# adb shell dmesg > /sdcard/dmesg.log //导出当前缓存的 kernel log
# adb shell kmsgcat //实时查看kernel log
# adb shell cat /proc/kmsg > kernel.log // 抓取 printk生成的内核消息
5. 抓取 TCP/IP协议相关的日志
# adb shell tcpdump -s 10000 -w /sdcard/tcpip.pcap
状态log
1.获取系统状态信息,如手机的内存信息、CPU信息、缓存等。
# adb shell dumpstate > /sdcard/dumpstate.log
2. 获取系统进程有关的信息。比如:当前运行的服务,进程信息等。
# adb shell dumpsys
如果想查看特定进程的特定service ,如 com.android.mms进程的meminfo,可以使用
# adb shell dumpsys meminfo com.android.mms
service有一下几种:
meminfo 显示内存信息
cpuinfo 显示CPU信息
account 显示accounts信息
activity 显示activities的信息
window 显示键盘,窗口和它们的关系
wifi 显示wifi信息
3. 获取 所有状态信息。包括 dumpsys,dmesg和dumpstate
# adb shell bugreport > /sdcard/bugreport.log
4. 查看内存信息
# adb shell cat /proc/meminfo
# adb shell cat /proc/vmstate //查看虚拟内存信息
log 分析
1. 有没有捕获异常
关键字: Exception
2. ANR
ANR的log一般都位于 /data/anr/,
关键字: ANR
例子: E/ActivityManager( 957): ANR in com.ipanel.join.appstore
3. Fatal
Fatal 一般比较严重,很多都很动态库和空指针有关,一般会接下来打印"Build fingerprint:" 或 ”NullPointerException“
4. 动态库问题
关键字: Build fingerprint
5. 空指针问题
关键字:NullPointerException
6. kernel panic
只有加载到内核空间的驱动模块才能直接导致kernel panic,你可以在系统正常的情况下,使用lsmod查看当前系统加载了哪些模块。
除此之外,内建在内核里的组件(比如memory map等)也能导致panic。
kernel panic分为 两种:
hard panic(关键字: Aieee)
soft panic(关键字: Oops)
参考: http://www.chengxuyuans.com/Android/64872.html
7.tombstone
tombstone 一般是由Dalvik错误,状态监视调试器,C层代码以及libc的一些问题导致的。
当系统发生tombstone的时候,kernel首先会上报一个严重的警告信号(signal),上层接收到之后,进程的调试工具会把进程中当时的调用栈现场保存起来,并在系统创建了data/tombstones目录后把异常时的进程信息写在此目录里面,开发者需要通过调用栈来分析整个调用流程来找出出问题的点。
日志路径: /data/tombstones
8. system crash
kernel log会出现: service 'activity' died
‘activity' 可以是任意的activity。
几种issue的区分
1. kernel panic:板子会reset到固定页面,如"EMMD USB DUMP"。
2. System hang: 触摸按压没有任何反应,console没有输出。
3. UI hang: 系统UI没有任何反应,但是console或者adb shell 有输出。
4. system crash: 可能会自动重启。