如何查看和检查Android日志?


109

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

  • 找到问题的根本原因
  • 识别行为不当的应用

如何查看和检查Android日志?


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

Answers:


59

Android 4.1及更高版本

首选方式是下载SDK并使用adb logcat(需要在设备上激活“开发人员选项”)。

有一些应用程序可用于查看完整的系统日志,但是它们只能在有根设备上运行,或者需要通过发出手动命令adb才能运行。有关更多信息,请参见此问题。

Android 4.0及更低版本

您可以下载SDK并使用它,adb logcat也可以从Google Play商店获取Logcat Extrem,后者直接在您的手机上显示日志。


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

好点子。某些手机​​倾向于向日志中的琐碎信息发送垃圾邮件,因此,如果您希望最小化文件大小和数据以查看,请查看developer.android.com/guide/developing/tools/adb.html
onik 2011年

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

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

logcat的极限是查看日志漂亮的应用程序
Arpit帕特尔

57

日志文件位置

在多个目录中可能会出现日志(包括崩溃的日志),但并非所有目录都是标准化的(即某些目录可能是特定于ROM的)。

  • /data/anr:某些跟踪文件似乎到达了此处(Dalvik在ANR上将堆栈跟踪写入此处,即“ Application Not Responding”(又称“ Force-Close”);请参见此处的日志摘录)
  • /data/dontpanic似乎是一个标准位置(AOSP),并且包含一些崩溃日志,包括跟踪信息(请参见例如viaForensicsStackOverflow
  • /data/kernelpanics 是另一个位置-我的Android设备上没有任何“内核恐慌”,我还没有看到任何内容。
  • /data/panic/panic_daemon.config可能指向配置的其他位置-在我的Droid 2也提到/sdcard/panic_data/
  • 提到的Droid 2也有一个/data/panicreports目录(此处为空)
  • /data/tombstones可能包含多个tombstone_nn文件(nn序列号,每个新文件都增加)。由于为死者安置了墓碑,因此这里完成的工作是“因意外而死的进程”(即崩溃)-在Linux / Unix系统上,这就是所谓的“核心转储”。但是,并非所有应用程序都会创建逻辑删除。这必须由开发人员明确启用(请参阅调试Android Core Dumps)。

可能还有更多的地方让我逃脱了;但是由于大多数日志记录tmpfs都已完成,因此重启后这些数据将丢失,并且与OP问题不符。

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

几个命令可以为您提供大量信息。对于大多数文件,建议将它们重定向到文件(> filename.ext)或通过过滤器(| grep search-for-this)传递它们:

内核日志

没有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命令的更多了解,请参见此处
测试

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

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

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

12

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


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

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

3

没有root的方法,即使在新的Android版本中也可以使用:

先决条件:

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

说明:

  1. 安装设备驱动程序以使用adb。您需要的一切都可以在这里找到
  2. 为您的操作系统下载adb​​可执行文件。它是Android SDK的一部分,但您也许可以单独找到adb可执行文件。
  3. 连接您的android设备。
  4. 启用开发人员选项
  5. 启用USB调试。
  6. 打开命令promt(windows)或终端(linux / mac)。怎么做:在Windows上:Windows + R>输入“ cmd”(不带引号)>单击Enter | 在Linux上:您不知道如何打开终端?哈哈| 在Mac上:Terminal输入Spotlight并将其打开
  7. CD到adb可执行文件所在的目录。在Windows上:转到下载adb​​可执行文件的目录,按住Shift键并单击右键,然后选择“打开控制台”(或类似名称)。在Linux / Mac上:右键单击目录,然后选择“在此处打开终端”(或仅将CD插入目录)
  8. 输入您的cmd /终端:adb devices验证您的设备已正确连接。
  9. 如果正确选择了设备,请输入adb logcat以显示强大而神奇的logcat aka stacktrace。
  10. 在设备上重现您的错误(或其他任何错误)。
  11. 然后,将整个cmd /终端窗口粘贴到粘贴服务(例如http://pastebin.com/)中并将其发送给我们。

(大部分复制自莱安德罗斯


2

免费的SysInfo项目页面)应用程序将显示系统日志,并压缩完整的系统报告以通过电子邮件,投递箱,NFC等发送。更不用提许多其他有趣的系统信息了。


(是的,我快迟到一年了,但是这个需要提一下)。
JRobert 2012年

这两个链接现在都断开了。
jk7

第二个链接(项目页面)仍然对我有用,但是其中的最后一个条目来自2010年。自那时以来,Android有所更改,从而破坏了Sysinfo的许多功能。
JRobert

-1

它位于中/sdcard/bugreports


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

2
Logcat-CyanogenMod Wiki您可以使用魔术键组合在/ sdcard / bugreports中创建一个bugreport文件。因此,这似乎是a)有点具体(可能是针对CM),b)并非问题的答案,因为OP会寻找“自动生成的”问题。
伊齐
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.