Android系统日志中有很多有趣的东西,它们在许多方面都很有帮助


找出问题的根本原因
识别行为异常的应用程序

如何查看和检查Android日志?

评论

评论不作进一步讨论;此对话已移至聊天。

#1 楼

Android 4.1及更高版本
首选方法是下载SDK并使用adb logcat(需要在设备上激活“开发人员选项”)。
有一些应用程序可用于查看完整的系统日志,但是它们只能工作在有根的设备上运行,或要求通过adb发出手动命令以使其正常运行。有关更多信息,请参见此问题。
Android 4.0及更低版本
您可以下载SDK并使用adb logcat,也可以从Google Play商店获取Logcat Extrem,后者直接在您的手机上显示日志。

评论


或者,您可以将终端仿真器与命令“ logcat> /sdcard/log.txt”一起使用,以将日志连续写入SD卡上的文件。这可以帮助找出随机重启的问题。

–Chahk
2011年10月11日15:07

好点子。某些手机​​倾向于在日志中充斥琐碎的信息,因此,如果您希望最小化文件大小和数据,请查看developer.android.com/guide/developing/tools/adb.html上的“过滤日志输出”部分#logcat

–onik
2011年10月11日下午16:31

LogCat Apps无法与JellyBean配合使用。 Google更改了Android API,应用不再具有读取其他应用日志的权限。

– Leandros
2012年11月11日下午13:39

我创建了一个简单的实用程序来从PC收集日志:gist.github.com/hrj/5983971

–HRJ
13年7月16日在18:36

Logcat Extreme是用于查看日志的不错的应用程序

– Arpit Patel
16年9月12日在7:42

#2 楼

日志文件位置

有几个目录可能会出现日志(包括崩溃的日志)-并非所有目录都是标准化的(即有些可能是ROM专用的)。



/data/anr:一些跟踪文件似乎到达了此处(Dalvik在ANR上将堆栈跟踪写入此处,即“ Application Not Responding”(又称“ Force-Close”);请参见此处的日志摘录)

/data/dontpanic似乎是标准位置(AOSP),并且包含一些崩溃日志,其中包括跟踪信息(请参见例如viaForensics和StackOverflow)。

/data/kernelpanics是另一个位置-没有任何“内核” ”在我的Android设备上出现“恐慌”,我还没有看到任何内容。
/data/panic/panic_daemon.config可能指向配置的其他位置-在我的Droid 2上,它提到了/sdcard/panic_data/。目录(此处为空)

/data/panicreports可能包含几个/data/tombstones文件(其中tombstone_nn是串行文件,每个新文件都增加)。由于为死者安置了墓碑,因此这里是为“因意外而死的进程”(即崩溃)完成的,在Linux / Unix系统上,这就是所谓的“核心转储”。但是,并非所有应用程序都会创建逻辑删除。这必须由开发人员显式启用(请参阅调试Android Core Dumps)。

可能还有其他一些地方使我无所适从;但是由于大多数日志记录是在nn上完成的,因此这些数据会因重新启动而丢失,并且与OP问题不符。

记录与终端应用程序(或adb)一起使用的命令

几个命令可以为您提供大量信息。对于大多数文件,建议将它们重定向到文件(tmpfs)或通过过滤器通过管道(> filename.ext):

内核日志

以下内容无需root用户即可使用:

$ dmesg
<6>[82839.126586] PM: Syncing filesystems ... done.
<7>[82839.189056] PM: Preparing system for mem sleep
<4>[82839.189361] Freezing user space processes ... (elapsed 0.05 seconds) done.
<4>[82839.240661] Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.
<snip>


Logcat

在这里您可以例如指定您感兴趣的领域-广播,事件...

# logcat -b events
I/am_create_service( 3457): [1085416560,nitro.phonestats/.widget.WidgetProvider4x1$WidgetUpdateService4x1,,3721]
I/am_destroy_service( 3457): [1085416560,nitro.phonestats/.widget.WidgetProvider4x1$WidgetUpdateService4x1,3721]
I/notification_cancel( 3457): [nitro.phonestats,4,0] 
<snip>


获取设备信息

还有很多:设备详细信息,帐户信息,服务...

$ dumpsys
Currently running services:
  LocationProxyService
  SurfaceFlinger
  accessibility
  account
  activity
<snip>
DUMP OF SERVICE account:
Accounts:
  1 Account {name=xxxxxxx@googlemail.com, type=com.google}
<snip> 

$ dumpstate
========================================================
== dumpstate: 2012-08-18 23:39:53
========================================================

Build: Gingerbread GWK74 - CyanogenMilestone2
Bootloader: 0x0000
Radio: unknown 
<snip>
------ MEMORY INFO (/proc/meminfo) ------
MemTotal: 487344 kB
MemFree: 10436 kB 
<snip>


多人合一

从logcat到dumpstate的所有内容:

$ bugreport > /mnt/sdcard/bugreport.txt


我很确定您真的要重定向最后一个命令... xD

关于权限的一些事情

PS:自然地,访问这些信息可能需要root用户,因为大多数源都位于内部存储中。

评论


要进一步了解adb logcat命令,请参见此处。

–测试
16-4-27的16:03

或者只是查看我们的日志记录标签Wiki @testing –甚至有更多参考文献:)

– Izzy♦
16年4月27日在20:47

“调试Android核心转储”的链接已消失,我们可以找到替代方法吗?

–蜘蛛
19年4月4日在10:15

@Spidey总是存在此类问题的Archive.ORG(链接转到那里的工作副本)。

– Izzy♦
19年4月4日在21:16

#3 楼

发现CatLog显示的Android日志比aLogcat更好。除了adb logcat,这就是我正在使用的。

评论


请参阅我上面关于LogCat应用程序的评论。

– Leandros
2012年11月11日下午13:40

我已经更新了问题。请注意,相对位置信息(例如“上方”)很容易过时,因为答案的顺序可能随时间而变化。

–流程
2012年11月11日14:03

#4 楼

没有root的方法,甚至适用于新的Android版本:

前提条件:


Linux,Windows或Mac
设备的USB电缆
Android设备

说明:


安装设备驱动程序以使用adb。您需要的所有内容都在这里

为您的操作系统下载adb​​可执行文件。它是Android SDK的一部分,但您也许可以单独找到adb可执行文件。
连接您的android设备。

启用开发人员选项。
启用USB调试。
打开命令提示符(windows)或终端(linux / mac)。操作方法:在Windows上:Windows + R>输入“ cmd”(不带引号)>单击Enter |在Linux上:您不知道如何打开终端?哈哈|在Mac上:在Spotlight中键入Terminal,然后将其打开
CD到adb可执行文件所在的目录。在Windows上:转到下载adb​​可执行文件的目录,按住Shift键并单击右键,然后选择“打开控制台”(或类似名称)。在Linux / Mac上:右键单击目录,然后选择“在此处打开终端”(或仅将CD插入目录)
在cmd / terminal中键入:adb devices以确认您的设备已正确连接。正确选择设备,键入adb logcat以显示强大而神奇的logcat aka stacktrace。
在设备上重现错误(或其他内容)。
之后,将整个cmd /终端窗口粘贴到粘贴中-service之类的服务,例如http://pastebin.com/并将其发送给我们。

(大部分是从莱安德罗斯复制过来的)

#5 楼

它位于/sdcard/bugreports中。

评论


我的手机上从未有过这样的文件夹……这是特定于制造商或设备的吗?

–马修·雷德(Matthew Read)
2011-12-19 23:44

从Logcat-CyanogenMod Wiki:您可以使用魔术键组合在/ sdcard / bugreports中创建bugreport文件。因此,这似乎是a)有点特定(可能是针对CM),b)不是问题的答案,因为OP会寻找“自动生成的”问题。

– Izzy♦
2012年8月18日23:47