Android:内核恐慌后如何获取内核日志?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (34)

我在我的设备上使用了一个Android自定义ROM,还使用了自定义的boot.img(自定义内核+ cmdline + ramdisk)。我现在想要在内核崩溃后立即查看内核日志,但不幸的是我无法使用串行控制台。

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

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在重启后也不包含日志,因为它似乎被清除了 - 或者日志也没有被写入。

提问于
用户回答回答于

至于我:

cat /proc/last_kmsg 

重新启动后(由insmod期间内核崩溃引起)会列出与崩溃相关的消息,例如:

[  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。

用户回答回答于

发生内核恐慌后,你可以将USB电缆连接到您的Android设备并检查该文件夹中的文件ADB

发现apanic内核恐慌后,我发现这个文件夹包含一些文件。例如,如果内核恐慌发生,并且你去检查文件夹,你可能会发现这两个文件:

apanic_console

apanic_threads

apanic_threads当发生内核恐慌时,你可以了解哪个线程/进程正在运行。在apanic_console你可能会发现更多的信息,比如一些关键寄存器堆栈跟踪和值:PCLR,等。

扫码关注云+社区