zoukankan      html  css  js  c++  java
  • Android APP测试的日志文件抓取

         1    log文件分类简介

      实时打印的主要有:logcat main,logcat radio,logcat events,tcpdump,还有高通平台的还会有QXDM日志

      状态信息的有:adb shell cat /proc/kmsg ,adb shell dmesg,adb shell dumpstate,adb shell dumpsys,adb bugreport,工程       模式等

      2    LOG抓取详解

      l  实时打印

    adb logcat -b main -v time>app.log  打印应用程序的log
    adb logcat -b radio -v time> radio.log 打印射频相关的log,SIM STK也会在里面,modem相关的ATcommand等,当然跟QXDM差的很远了。
    adb logcat -b events -v time  打印系统事件的日志,比如触屏事件。。。
    //android log的抓取
    adb logcat
    //kernel log的抓取
    adb shell cat /proc/kmsg
    //log 信息的保存
    mkdir  /data/anr
    logcat *:V > /data/anr/android
    demsg >/data/anr/kernel
    //按ctrl+c结束log输出
    adb pull /data/anr ./log/

      tcpdump 是很有用的,对于TCP/IP协议相关的都可以使用这个来抓,adb shell tcpdump -s 10000 -w /sdcard/capture.pcap,比如抓mms下载的时候的UA profile,browser上网的时候,使用proxy的APN下载,streaming的相关内容包括UA profile等。

      最后是高通平台的QXDM,不管是不是Android,只要使用高通芯片,都会对它很熟悉,当然了,不是高通的芯片就不用提它了。这个不多讲,内容丰富,射频,电话,上网,...凡是高通提供的解决方案,这个都可以抓。(QXDM 的LOG抓取方法请参考QPST、QXDM的基本使用说明及作用)

      l  状态信息

      o   bugreport(命令adb bugreport>bugreport.log)。里面包含有dmesg,dumpstate和dumpsys。

      o   dumpstate是系统状态信息,里面比较全,包括手机当前的内存信息、cpu信息、logcat缓存,kernel缓存等等。

      o    adb shell dumpsys这个是关于系统service的内容都在这个里面,这个命令还有更详尽的用法,比如adb shell dumpsys meminfo system是查看system这个process的内存信息。

      o   kmsg抓取

      adb shell cat /proc/kmsg > kmsg.txt,打开后查msm_kgsl字段

      说明:用于检索用printk生成的内核消息。任何时刻只能有一个具有超级用户权限的进程可以读取这个文件。也可以用系统调用syslog检索这些消息。通常使用工具dmesg或守护进程klogd检索这些消息。proc是一个内存文件系统, 每次读文件kmsg实际是内核内部的循环缓冲区,每读过后,循环缓冲区的东西就被认为已经处理过了(也就是变成无效内容),所以你再次读为空是很正常的 为什么会这样处理呢,循环缓冲区大小有限,内核又随时可能往里面写东西,所以这样处理很正常. 你去查一下/proc/kmsg的信息有没有跟系统日志关联,如果有的话,你就可以读日志文件

      o   dmsg抓取

      adb shell dmesg > dmesg.txt

      说明:dmesg用来显示开机信息,kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。dmesg是kernel的log,凡是跟kernel相关的,比如driver出了问题(相机,蓝牙,usb,启动,等等)开机信息亦保存在/var/log目录中,名称为dmesg的文件里。more /var/log/dmesg

      o   工程模式下log的抓取

      对于Apollo手机请拨打*#*#8888#*#* ,然后勾选相应的LOG。待测试结束后,通过SD卡导出LOG到PC.

    3.Log分析:

    Get Log from Android System
    adb bugreport > bugreport.txt
    copy bugreport to the current directory.
    

    bugreport里面包含了各种log信息,大部分log也可以通过直接运行相关的程序来直接获得.

      步骤如下:

      1.adb shell 2.进入相关工具程式的目录 3.执行相关程式 4.得到相关信息

      下面以输出进程信息为例 1.adb shell 2.输入ps -P 3.可以看到相关进程信息

      Log Archive Analysis

      1.bugreport

      bugreport记录android启动过程的log,以及启动后的系统状态,包括进程列表,内存信息,VM信息等等到.

      单独察看某个数据可使用cat指令察看,例如cat /proc/meminfo

      2.bugreport结构分析

      (1)dumpstate

      MEMORY INFO

      获取该log:读取文件/proc/meminfo

      系统内存使用状态

      CPU INFO

      获取该log:执行/system/bin/top -n 1 -d 1 -m 30 -t

      系统CPU使用状态

      PROCRANK

      获取该log:执行/system/bin/procrank

      执行/system/xbin/procrank后输出的结果,查看一些内存使用状态

      VIRTUAL MEMORY STATS

      获取该log:读取文件/proc/vmstat

      虚拟内存分配情况

      vmalloc申请的内存则位于vmalloc_start~vmalloc_end之间,与物理地址没有简单的转换关系,虽然在逻辑上它们也是连续的,但是在物理上它们不要求连续。

      VMALLOC INFO

      获取该log:读取文件/proc/vmallocinfo

      虚拟内存分配情况

      SLAB INFO

      获取该log:读取文件/proc/slabinfo

      SLAB是一种内存分配器.这里输出该分配器的一些信息

      ZONEINFO

      获取该log:读取文件/proc/zoneinfo

      zone info

      SYSTEM LOG(需要着重分析)

      获取该log:执行/system/bin/logcat -v time -d *:v

      会输出在程序中输出的Log,用于分析系统的当前状态

      VM TRACES

      获取该log:读取文件/data/anr/traces.txt

      因为每个程序都是在各自的VM中运行的,这个Log是现实各自VM的一些traces

      EVENT LOG TAGS

      获取该log:读取文件/etc/event-log-tags

      EVENT LOG

      获取该log:执行/system/bin/logcat -b events -v time -d *:v

      输出一些Event的log

      RADIO LOG

      获取该log:执行/system/bin/logcat -b radio -v time -d *:v

      显示一些无线设备的链接状态,如GSM,PHONE,STK(Satellite Tool Kit)…

      NETWORK STATE

      获取该log:执行/system/bin/netcfg (得到网络链接状态)

      获取该log:读取文件/proc/net/route (得到路由状态)

      显示网络链接和路由

      SYSTEM PROPERTIES

      获取该log:参考代码实现

      显示一些系统属性,如Version,Services,network…

      KERNEL LOG

      获取该log:执行/system/bin/dmesg

      显示Android内核输出的Log

      KERNEL WAKELOCKS

      获取该log:读取文件/proc/wakelocks

      内核对一些程式和服务唤醒和休眠的一些记录

     

    KERNEL CPUFREQ
    (Linux kernel CPUfreq subsystem) Clock scaling allows you to change the clock speed of the CPUs on the fly.
    This is a nice method to save battery power, because the lower the clock speed is, the less power the CPU consumes.
    PROCESSES
    

      

      获取该log:执行ps -P 

      显示当前进程

      PROCESSES AND THREADS

      获取该log:执行ps -t -p -P

      显示当前进程和线程

      LIBRANK

      获取该log:执行/system/xbin/librank

      剔除不必要的library

      BINDER FAILED TRANSACTION LOG

      获取该log:读取文件/proc/binder/failed_transaction_log

      BINDER TRANSACTION LOG

      获取该log:读取文件/proc/binder/transaction_log

      BINDER TRANSACTIONS

      获取该log:读取文件/proc/binder/transactions

      BINDER STATS

      获取该log:读取文件/proc/binder/stats

      BINDER PROCESS STATE

      获取该log:读取文件/proc/binder/proc/*

      bind相关的一些状态

      FILESYSTEMS

      获取该log:执行/system/bin/df

      主要文件的一些容量使用状态(cache,sqlite,dev…)

      PACKAGE SETTINGS

      获取该log:读取文件/data/system/packages.xml

      系统中package的一些状态(访问权限,路径…),类似Windows里面的一些lnk文件吧.

      PACKAGE UID ERRORS

      获取该log:读取文件/data/system/uiderrors.txt

  • 相关阅读:
    flink 读取kafka 数据,partition分配
    Flink 报错 "Could not find a suitable table factory for 'org.apache.flink.table.factories.StreamTableSourceFactory' in the classpath"
    flume接收http请求,并将数据写到kafka
    【翻译】Flume 1.8.0 User Guide(用户指南) Processors
    【翻译】Flume 1.8.0 User Guide(用户指南) Channel
    【翻译】Flume 1.8.0 User Guide(用户指南) Sink
    【翻译】Flume 1.8.0 User Guide(用户指南) source
    【翻译】Flume 1.8.0 User Guide(用户指南)
    Apache Flink 简单安装
    Java之使用IDE
  • 原文地址:https://www.cnblogs.com/liu-ke/p/4291549.html
Copyright © 2011-2022 走看看