【发布时间】:2011-05-20 11:55:54
【问题描述】:
我知道启动日志可以通过拉出kmsg或dmesg到ADB的内容来获得。
但我不知道如何在 Android 中检索关机日志,因为 Android 中没有 /var 文件夹(大多数桌面 Linux 发行版通常存储其关机日志的地方)。
那么如何在Android中获取关机日志呢?
【问题讨论】:
标签: android linux logging linux-kernel
我知道启动日志可以通过拉出kmsg或dmesg到ADB的内容来获得。
但我不知道如何在 Android 中检索关机日志,因为 Android 中没有 /var 文件夹(大多数桌面 Linux 发行版通常存储其关机日志的地方)。
那么如何在Android中获取关机日志呢?
【问题讨论】:
标签: android linux logging linux-kernel
查看以下位置:
/proc/last_kmsg
/data/tombstones/
/data/dontpanic/
/data/system/dropbox/
(此列表并非严格意义上的内核日志,还包括框架和应用程序日志,有时也很有趣)
【讨论】:
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
即使在 adb 断开连接后,您也可以不断地将 proc/kmsg 和 logcat 复制到您的 Android 设备或 microSD 卡上的文件中以获取日志。
您需要 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.
希望这会有所帮助。
打饼干
【讨论】:
较新的手机不使用这些位置中的任何一个,所以如果您正在阅读这篇文章,那么截至目前
内核崩溃日志现在位于 /sys/fs/pstore 而不是 /proc/last_kmsg
【讨论】:
我发现在 Android 中收集关机日志的一种解决方法是在主机 PC 上运行 adb pull /proc/kmsg C:\Logs.txt,然后关闭设备。您将获得日志,直到主机和设备之间的 USB 通信中断!我知道这只是众多关机场景中的一个案例,但我还没有找到其他案例的满意答案!
【讨论】:
我一直在寻找同样的东西,终于找到了答案!
在 android 8 中,所有日志都位于 \data\log\android_logs\... 中,包括应用程序和内核日志。内核日志称为kmsgcat-log_timestamp_.gz
编辑:虽然这是一个非常古老的线程,但我认为答案可能会有所帮助。
【讨论】: