找出问题的根本原因
识别行为异常的应用程序
如何查看和检查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
评论
评论不作进一步讨论;此对话已移至聊天。