首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android:内核死机后如何获取内核日志?

Android:内核死机后如何获取内核日志?
EN

Stack Overflow用户
提问于 2012-03-13 18:29:47
回答 5查看 90.4K关注 1票数 25

我在我的设备上使用了Android Custom ROM,也使用了自定义boot.img (自定义内核+ cmdline +内存磁盘)。我现在希望能够在内核死机后立即查看内核日志,但不幸的是我不能使用串行控制台。

好消息是: Android的Linux内核中似乎有一些源代码/模块正是为此目的而编写的。例如,在我的.config文件中为内核激活了以下行:

代码语言:javascript
复制
CONFIG_ANDROID_RAM_CONSOLE=y
CONFIG_ANDROID_RAM_CONSOLE_ENABLE_VERBOSE=y
CONFIG_APANIC=y
CONFIG_APANIC_PLABEL="oem_log"

我的问题是:为了测试它,我强制内核死机,即用insmod panic.ko加载一个简单的死机内核模块后,似乎没有日志写入名为oem_log的MTD (它存在于我的设备上)。其次,RAM在重新启动后也不包含日志,因为它似乎被清除了-或者日志也没有被写入。

那么,如何在死机后获得内核日志呢?此外,如果有一种方法可以在正在运行的系统上测试APANIC,那将是很有帮助的。也许是通过使用内核调试系统?到目前为止,我对此还是个新手。

提前感谢您的帮助!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-11-12 23:04:02

对我来说,

代码语言:javascript
复制
cat /proc/last_kmsg 

重新引导后(由insmod期间的内核恐慌引起)是否列出了与崩溃相关的消息,如

代码语言:javascript
复制
[  424.909515] Kernel panic - not syncing: Fatal exception
[  424.909606] Backtrace: 
[  424.909790] [<c005a5ec>] (dump_backtrace+0x0/0x10c) from [<c05f38dc>] (dump_stack+0x18/0x1c)
[  424.909973]  r6:c5cccf00 r5:00000000 r4:c08505a0 r3:00000000

所以你至少可以试一下。我在Galaxy Nexus上使用Linux 3.0.31-g4f6d371。

票数 27
EN

Stack Overflow用户

发布于 2017-11-02 13:07:33

在Android-7.0或更高版本中,控制台日志被移动到:/sys/fs/pstore/ last_kmesg -ramoops,所以尝试:

代码语言:javascript
复制
cat /sys/fs/pstore/console-ramoops

它在nexus5x上运行得很好。

票数 17
EN

Stack Overflow用户

发布于 2012-05-10 06:30:34

/data/dontpanic文件夹怎么样?在内核崩溃发生后,你可以将USB线连接到你的安卓设备上,并通过ADB检查该文件夹中的文件。

在内核死机后,我发现这个文件夹包含一些apanic文件。例如,如果刚刚发生内核死机,而您去检查文件夹,您可能会找到以下两个文件:

apanic_console

apanic_threads

您可以在apanic_threads中找出发生内核死机时哪个线程/进程正在运行。在apanic_console中,您可能会找到更多信息,如堆栈跟踪和一些关键寄存器的值:PCLR等。

它们将帮助您开始调试。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9682306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档