1、logcat

(四类log buffer是main,radio。system。events)

adb wait-for-device logcat

adb logcat -v time > logcat.txt      //默认是-b main -b system
adb logcat -v time -b main  
     //main log
adb logcat -v time -b radio  
     //radio log
adb
logcat -v time -b system        //system log
adb logcat -v time -b events

2、anr log
adb pull /data/anr

3、tombstone log
adb pull /data/tombstones

4、core log
adb pull  /data/log/core

5、开机log
adb shell dmesg > dmesg.txt

6、logcatch
adb pull /data/logcatch

7、qxdm log
adb pull /sdcard/logs

8、 hprof log
在分析app 时,我们通常须要分析app 的java heap 资料,如分析java 的memory leak, 追查heap

中相关变量情况等。

在android 中抓取app 的hprof 操作方式有以下几种:

第一种方式: 使用am 命令

   adb shell am dumpheap {Process} file

   如 adb shell am dumpheap com.android.phone /data/anr/phone.hprof

   adb pull /data/anr/phone.hprof

另外一种方式: 使用DDMS 命令

   在DDMS 中选择相应的process, 然后在Devices button栏中选择Dump Hprof file, 保存就可以

第三种方式: 通过代码的方式

   在android.os.Debug 这个class 中有定义相关的抓取hprof 的method.

如: public static void dumpHprofData(String fileName) throws IOException;

这样就可以在代码中直接将这个process 的hprof 保存到相相应的文件里。注意这个仅仅能抓取当时的

process.

假设想抓其它的process 的hprof, 那么就必须通过AMS 帮忙了。

能够先获取IActivityManager 接口,然后调用它的dumpheap 方法。详细的代码。大家能够參考

frameworks/base/cmds/am/src/com/android/commands/am/am.java 中的调用代码

抓取回hprof 后。就能够用hprof-conv 命令将DVM 格式的hprof 转换成标准的java 命令的hprof

   hprof-conv in.hprof out.hprof

然后使用如MAT 之类的工具进行详细的分析


9、bugreport
adb bugreport > bugreport.txt


10、kernel log(仅仅有从当前时间起的非常少的log)
cat proc/kmsg > kmsg.txt

11、其它

adb shell dumpstate //各类信息。比方进程信息,内存信息。进程是否异常,kernnel的log等

adb shell dumpcrash

adb shell dumpsys  //查询全部service的状态

android抓取各种log的方法的更多相关文章

  1. android抓取logcat日志的方法

    这几天帮忙测试一个APP,报告结果需要提交日志文件,于是百度了下安卓的获取日志方法,其实很简单,7个步骤搞定,下面把我的总结分享给大家. 1.下载adb工具包 https://pan.baidu.co ...

  2. Android 抓取LOG的几种命令【转】

    通常调试时候需要抓取log信息,下面几种通过ADB命令来抓取log的方法: USB连接上手机,手机需要其他操作:然后运行ADB工具:输入不同的命令即可抓取对应的LOG信息. 抓取radio LOG信息 ...

  3. 如何在User版本开启串口(Uart),抓取上层Log,开启输入控制台

    [原][FAQ03891] 如何在User版本开启串口(Uart),抓取上层Log,开启输入控制台 2014-11-26阅读1369 评论0 FAQ Content [Description]如何在U ...

  4. 详解usbmon抓取的log各字段的含义

    详解 usbmon 抓取的 log 各字段的含义 在上篇文章中,我们已经介绍了如何在 linux 下使用 usbmon 抓取 usb 总线上数据的方法.(https://www.cnblogs.com ...

  5. php使用curl简单抓取远程url的方法

    这篇文章主要介绍了php使用curl简单抓取远程url的方法,涉及php操作curl的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php使用curl抓取远程url的方法.分 ...

  6. ASP.NET抓取网页内容的实现方法

    这篇文章主要介绍了ASP.NET抓取网页内容的实现方法,涉及使用HttpWebRequest及WebResponse抓取网页内容的技巧,需要的朋友可以参考下 一.ASP.NET 使用HttpWebRe ...

  7. 通过WireShark抓取iPhone联网数据方法

    通过WireShark抓取iPhone联网数据方法 命令行 rvictl -s <UDID> 然后再wireshark选择rvi0进行抓包即可 抓包完后,移除用命令 rvictl -x & ...

  8. bat实现固定时间循环抓取设备log

    背景:测试时需要实时抓取android设备log,但是一份log抓取过来非常庞大(有时超过500M+,编辑器都打不开,还得找工具进行分割,甚是蛋疼),查看也非常不方便. 解决:基于上述情况,与其之后进 ...

  9. android 抓取native层奔溃

    使用android的breakpad工具 使用这个工具需要下载Breakpad的源码,然后进行编译,编译之后会生成两个工具 我们使用这两个工具来解析奔溃的位置.这里我们可以下载已经编译好的工具 下载地 ...

随机推荐

  1. caioj 1081 动态规划入门(非常规DP5:观光游览)

    这道题和前面的分组的题有点像 就是枚举最后一组的长度. 然后组数可以在第一层循环也可以在第二层循环 我自己的话就统一一下在第一层循环吧 然后这道题题意我一直没理解清楚,浪费了很多时间,写复杂了 同时初 ...

  2. CMSIS-RTOS 信号量

    信号量Semaphores 和信号类似,信号量也是一种同步多个线程的方式,简单来讲,信号量就是装有一些令牌的容器.当一个线程在执行过程中,就可能遇到一个系统调用来获取信号量令牌,如果这个信号量包含多个 ...

  3. hdu 1423 最长公共递增子序列 LCIS

    最长公共上升子序列(LCIS)的O(n^2)算法 预备知识:动态规划的基本思想,LCS,LIS. 问题:字符串a,字符串b,求a和b的LCIS(最长公共上升子序列). 首先我们可以看到,这个问题具有相 ...

  4. 51Nod 1405 树的距离之和(dp)

    1405 树的距离之和 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 给定一棵无根树,如果它有n个节点,节点编号从1到n, 求随意两点之间的距离( ...

  5. 使用maven运行单元測试总结

    maven本身没有单元測试框架,可是maven的default生命周期的test阶段绑定了maven-surefire-plugin插件,该插件能够调用Junit3.Junit4.TestNG等Jav ...

  6. avalon 笔记---Mr.wing

    Avalon笔记步骤一:引用js文件<script src="js/avalon.js"></script>步骤二:<script> var v ...

  7. 洛谷P4093 [HEOI2016/TJOI2016]序列

    题目描述 佳媛姐姐过生日的时候,她的小伙伴从某宝上买了一个有趣的玩具送给他.玩具上有一个数列,数列中某些项的值可能会变化,但同一个时刻最多只有一个值发生变化.现在佳媛姐姐已经研究出了所有变化的可能性, ...

  8. js创建dom操作select

    document.getElementById("column-left").getElementsByTagName("header")[0].onclick ...

  9. ES6学习笔记(十)代理器Proxy

    Java可以使用面向切面(AOP)的方法来实现某些统一的操作,比如某个操作的前置通知,后置通知等等,这种操作非常方便,其本质便是动态代理,JS的代理Proxy代理该如何使用呢? 某位大神的实现如下: ...

  10. JS的解析与执行过程—函数预处理

    声明:之所以分为全局预处理与函数预处理,只是为了理解方便,其实在实际运行中二者是不分先后的. 函数预处理阶段与全局预处理的差别: 函数每调用一次,就会产生一个LexicalEnviroment对象,在 ...