我知道可以通过ADB
拉出kmsg
或dmesg
内容来获取启动日志。
但我不知道如何在Android中检索关机日志,因为Android中没有/var
文件夹(大多数桌面Linux发行版通常存储其关机日志的地方)。
那么如何在Android中获取关机日志?
查看以下某些位置:
/proc/last_kmsg /data/tombstones/ /data/dontpanic/ /data/system/dropbox/
(这个列表不是严格的内核日志,包括框架和应用程序日志,有时也有兴趣)
我发现在Android中收集关机日志的一个方法是在主机PC上运行adb pull /proc/kmsg C:\Logs.txt
,然后关闭设备。 您将获取日志,直到主机和设备之间的USB通信快照! 我知道这只是众多关机场景中的一例,但我没有find其他案例的满意答案!
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
情况下工作)
或者将常规复制命令添加到某些启动脚本 。
/ TL; DR
您可以不断地将proc/kmsg
和logcat
复制到Android设备或microSD卡上的文件中,以便在adb断开连接后获取日志。
您需要root访问权限和adb root权限才能使用此权限。 对于后者,如果您有自定义ROM或adbd insecure应用程序 ,请使用开发人员选项中的设置。
使用adb shell
获取android shell后,输入su
以获取超级用户访问权限。
然后,您不仅需要在命令后放置&符号( &
),还要确保在adb断开连接后该命令继续运行。 这是由nohup
, disown
或setsid
(请参阅此处了解用法)。
如果由于您没有这些命令而无效,则需要安装busybox 。
在这里看到我的问题。
请参阅此处了解如何获取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
,它在断开连接和重新连接后仍然存活。 我想你必须尝试文件不断变大。 如果有人弄明白为什么它表现得像是……让我知道,我会编辑答案。
将命令添加到启动脚本可能也是一些解决方案。
希望这可以帮助。
fightcookie