【android】 日志获取

日志信息:

  1. boot日志,通过串口获取
  2. 内核日志:通过dmesg 获取
  3. 系统日志:通过logcat,dumpsys获取
  4. APP日志: 通过am命令获取

1.boot日志

boot日志是android 从上电开始的输出,主要通过串口获取。

2.内核日志dmesg

获取方法:命令行

样例:【cat /proc/kmsg】【dmesg -c】

内核日志,主要是内核阶段打印,当需要调试驱动时,可以使用"kernel动态调试[dynamic_debug ]"功能

  1. kernel编译阶段打开
    CONFIG_DEBUG_FS=y
    CONFIG_DYNAMIC_DEBUG=y

     

  2. 输入需要调试的文件
    adb root
    adb remount #重新挂载,否则文件是只读的无法写入
    adb shell
    echo -n "file q6adm.c +p" > /sys/kernel/debug/dynamic_debug/control #添加调试文件
    echo -n "file q6adm.c -p" > /sys/kernel/debug/dynamic_debug/control #关闭调试文件

     

  3. 调整kernel打印等级
    cat /proc/sys/kernel/printk #查看kernel日志等级
    
    7 4 1 7
    
    echo 8 4 1 7 > /proc/sys/kernel/printk #更改kernel日志等级

    (1)第一个参数 7表示小于7优先级消息才会被输出到控制台。

    (2)第二个参数4 表示默认的printk消息优先级别,即printk(“hell world”);优先级为4, 由于4<7,故可以被打印到控制台。

    (3)第三个参数1 表示可接收的最高优先级,当printk disable控制台输出时,设置第一个参数为1,但是,从内核等级来看,还有优先级0,这个是printk最高级优先级,一般用于内核严重消息打印。比如内存错误或者 watchdog reset.也可以设置第一个和第三个参数为0

    (4)第四个参数7 默认控制台优先级,即第一个参数的默认优先级。

  4. dmesg 获取日志即可
    adb shell dmesg -c  > kernel.log

     

3.系统日志logcat

获取方法:命令行,android studio

样例:

adb logcat -d -v time -b "main"   >  main.txt
adb logcat -d -v time -b "system" >  system.txt
adb logcat -d -v time -b "events" >  events.txt

logcat是andriod系统从kernel启动完成后,Logger系统收集的log,包含framework,app的日志,由于日志较多,推荐使用android studio来分析实时的日志,如果条件不允许,则使用命令行获取日志,再慢慢分析。

logcat Google 详细介绍

3.1 logcat日志分类

logcat日志分类
radio查看包含无线装置/电话相关消息的缓冲区无线/电话相关的Log信息
events查看已经过解译的二进制系统事件缓冲区消息。系统事件相关的Log信息
main查看主日志缓冲区(默认),不包含系统和崩溃日志消息。大部分应用级别的Log信息都在这里
system查看系统日志缓冲区(默认)低级别的系统调试Log信息
crash查看崩溃日志缓冲区(默认)。 
all查看所有缓冲区。 
default报告 main、system 和 crash 缓冲区。 

3.2 logcat输出控制 "-v "后的参数

logcat输控制
brief显示优先级、标记以及发出消息的进程的 PID。
long显示所有元数据字段,并使用空白行分隔消息。
process仅显示 PID。
raw显示不包含其他元数据字段的原始日志消息。
tag仅显示优先级和标记。
thread旧版格式,显示优先级、PID 以及发出消息的线程的 TID。
threadtime显示日期、调用时间、优先级、标记、PID 以及发出消息的线程的 TID。
time显示日期、调用时间、优先级、标记以及发出消息的进程的 PID。

3.3 logcat日志中的等级标识

等级标识
V详细(最低优先级)
D调试
I信息
W警告
E错误
F严重错误
S静默(最高优先级,绝不会输出任何内容)

 

4.系统日志dumpsys

dumpsys google 详解

获取方式:命令行

样例:adb shell dumpsys [-t timeout] [--help | -l | --skip services | service [arguments] | -c | -h]

dumpsys可以获取系统的服务信息,可以使用dumpsys -l 查看dumpsysy支持查看的服务列表。

例如:

  1. dumpsys input:输入设备(如键盘和触摸屏)的状态以及输入事件的处理
    adb shell dumpsys input

     

  2. dumpsys gfxinfo:进行新能测试
    adb shell dumpsys gfxinfo package-name framestats

     

  3. dumpsys netstats:设备启动以来收集的网络使用情况统计信息
    adb shell dumpsys netstats detail

     

  4. dumpsys procstats:查看内存使用情况

    adb shell dumpsys procstats --hours 3
    #adb shell dumpsys meminfo package_name|pid [-d]
    adb shell dumpsys meminfo com.google.android.apps.maps -d

     

5.APP日志

5.1 am dumpheap

Android am 命令使用

获取方法:命令[adb shell am dumpheap [参数] <process>]

样例:

adb shell am dumpheap com.android.browser /data/local/tmp/test.hprof
#获取内存快照(后缀名必需为.hprof)
adb pull /data/local/tmp/test.hprof ./test.hprof

PC端使用命令:hprof-conv e:\test.hprof e:\test1.hprof进行文件转化,使用mat工具对内存进行查看分析。

6.日志工具

6.1 工具Traceview

Traceview是android平台配备一个很好的性能分析的工具。它可以通过图形化的方式让我们了解我们要跟踪的程序的性能,并且能具体到method。

6.2 bugreport

google官方分析工具,后期补充

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值