android 中获取logcat缓冲区信息

本文详细介绍了如何使用Android Logcat工具来捕获和记录应用程序的运行时错误信息,包括手动导出日志的方法及通过编写小工具实现一键导出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

很多时候,android程序难免会有很多运行时错误扑捉不到或者扑捉不充分,导致程序出错的时候记录不下错误。

如下图所示

 

此时最简单的就是,连接USB线,运行 adb logcat -b main -v time > logcat.log将缓冲区内的纪录导出。

 

这里详细解释一下这行命令的意思:

Logcat命令列表
Option Description
-b <buffer> 加载一个可使用的日志缓冲区供查看,比如event 和radio . 默认值是main 。具体查看Viewing Alternative Log Buffers.
-c 清楚屏幕上的日志.
-d 输出日志到屏幕上.
-f <filename> 指定输出日志信息的<filename> ,默认是stdout .
-g 输出指定的日志缓冲区,输出后退出.
-n <count> 设置日志的最大数目<count> .,默认值是4,需要和 -r 选项一起使用。
-r <kbytes> 每<kbytes> 时输出日志,默认值为16,需要和-f 选项一起使用.
-s 设置默认的过滤级别为silent.
-v <format> 设置日志输入格式,默认的是brief 格式,要知道更多的支持的格式,参看Controlling Log Output Format . 

 

-b main 是指定读取main缓冲区中的信息:

main指的就是  /dev/log/main这个循环buffer
ls发现/dev/log/还有这几个循环buffer,一般读取main就够了

system
radio
events
main

我们来看一下手机中的循环buffer的大小信息:(也就是说,理论上该手机最大有16KB的缓冲信息可以获取)

logcat -g

/dev/log/main: ring buffer is 128Kb (127Kb consumed), max entry is 4096b, max pa
yload is 4076b
/dev/log/system: ring buffer is 128Kb (127Kb consumed), max entry is 4096b, max
payload is 4076b

 

以上的方法就是讲解的手动方式获取运行时堆栈信息:

 

如果不想这么麻烦,其实也简单直接写一个小程序,当需要获取logcat堆栈信息的时候一个按钮触发如下代码就可以了

    publicstaticStringLOG_FILE_NAME =

            Environment.getExternalStorageDirectory() +"/jhyLogcat";

process =Runtime.getRuntime().exec(

                                "logcat -b main -v time -f " +LOG_FILE_NAME +requestTime

                                        + ".log");

 

参考:http://blog.youkuaiyun.com/czbever/article/details/5910640

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值