Android存储关闭日志在哪里?

时间:2011-05-20 11:55:55

标签: android linux logging linux-kernel

我知道可以通过提取kmsgdmesgADB的内容来获取启动日志。
但我不知道如何在Android中检索关机日志,因为Android中没有/var文件夹(大多数桌面Linux发行版通常存储关机日志的地方)。

那么如何在Android中获取关机日志?

4 个答案:

答案 0 :(得分:6)

查看以下某些位置:

/proc/last_kmsg
/data/tombstones/
/data/dontpanic/
/data/system/dropbox/

(这个列表不是严格的内核日志,包括框架和应用程序日志,有时候也很有用)

答案 1 :(得分:2)

我发现在Android中收集关机日志的一项工作是在主机PC上运行adb pull /proc/kmsg C:\Logs.txt,然后关闭设备。您将获取日志,直到主机和设备之间的USB通信快照!我知道这只是众多关机场景中的一例,但我没有找到其他案例的满意答案!

答案 2 :(得分:2)

<强> TL; DR
通过adb运行命令,将logcat和proc / kmsg复制到文件中并使其保持运行,即使adb与nohupdisownsetsid断开连接也是如此。可能需要busybox,也需要root和adb root setsid cat proc/kmsg > /sdcard/kmsg.txt &

logcat -v long -f /sdcard/logcat.txt(某种方式只能在没有setsid的情况下运行)

或者将正常的复制命令添加到某些startup script / TL; DR

您可以不断将proc/kmsglogcat复制到Android设备或microSD卡上的文件中,即使在adb断开连接后也能获取日志。

您需要root访问权限和adb root访问权限才能生效。对于后者,如果您有自定义ROM或adbd insecure app,请使用开发人员选项中的设置。

使用adb shell获取Android shell后,输入su以获得超级用户访问权限。

然后,您不仅需要在命令之后放置一个&符号(&),还要确保在adb断开连接后该命令继续运行。这是由nohupdisownsetsid完成的(有关用途,请参阅here)。 如果由于您没有这些命令而无效,则需要安装busybox 请参阅我的问题here

请参阅here了解如何获取logcat和内核日志并将其打印到某个文件或合并它。 有关logcat命令的参数,请参阅developer.android.com/tools/help/logcat.html。

最后,您可以为内核消息添加setsid cat proc/kmsg > /sdcard/kmsg.txt &之类的命令。

对于logcat,您可以使用以下命令之一:logcat -v long -f /sdcard/logcat.txtlogcat -v long > /sdcard/logcat.txt

我不知道为什么,但有时它不能与setsid一起使用,只是没有连续复制但在执行命令后不久就停止了。在这些情况下,它也会在输入jobs时出现,否则就不会出现。然后它只在没有setsid的情况下工作,它在断开连接并重新连接后仍然存活。我想你必须尝试文件不断变大。如果有人弄明白为什么它表现得像是......让我知道,我会编辑答案。

Probably adding the commands to a startup script could be a solution for some, too.

希望这有帮助。

fightcookie

答案 3 :(得分:0)

较新的电话不使用这些位置中的任何一个,因此,如果您现在正在阅读本文,那么

内核崩溃日志现在位于/ sys / fs / pstore中,而不是/ proc / last_kmsg