我知道可以通过提取kmsg
或dmesg
到ADB
的内容来获取启动日志。
但我不知道如何在Android中检索关机日志,因为Android中没有/var
文件夹(大多数桌面Linux发行版通常存储关机日志的地方)。
那么如何在Android中获取关机日志?
答案 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与nohup
,disown
或setsid
断开连接也是如此。可能需要busybox,也需要root和adb root
setsid cat proc/kmsg > /sdcard/kmsg.txt &
和
logcat -v long -f /sdcard/logcat.txt
(某种方式只能在没有setsid
的情况下运行)
或者将正常的复制命令添加到某些startup script 的 / TL; DR 强>
您可以不断将proc/kmsg
和logcat
复制到Android设备或microSD卡上的文件中,即使在adb断开连接后也能获取日志。
您需要root访问权限和adb root访问权限才能生效。对于后者,如果您有自定义ROM或adbd insecure app,请使用开发人员选项中的设置。
使用adb shell
获取Android shell后,输入su
以获得超级用户访问权限。
然后,您不仅需要在命令之后放置一个&符号(&
),还要确保在adb断开连接后该命令继续运行。这是由nohup
,disown
或setsid
完成的(有关用途,请参阅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.txt
或logcat -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