我在我的设备上使用了Android Custom ROM,也使用了自定义boot.img (自定义内核+ cmdline +内存磁盘)。我现在希望能够在内核死机后立即查看内核日志,但不幸的是我不能使用串行控制台。
好消息是: 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在重新启动后也不包含日志,因为它似乎被清除了-或者日志也没有被写入。
那么,如何在死机后获得内核日志呢?此外,如果有一种方法可以在正在运行的系统上测试APANIC,那将是很有帮助的。也许是通过使用内核调试系统?到目前为止,我对此还是个新手。
提前感谢您的帮助!
发布于 2012-11-12 23:04:02
对我来说,
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。
发布于 2017-11-02 13:07:33
在Android-7.0或更高版本中,控制台日志被移动到:/sys/fs/pstore/ last_kmesg -ramoops,所以尝试:
cat /sys/fs/pstore/console-ramoops
它在nexus5x上运行得很好。
发布于 2012-05-10 06:30:34
/data/dontpanic
文件夹怎么样?在内核崩溃发生后,你可以将USB线连接到你的安卓设备上,并通过ADB
检查该文件夹中的文件。
在内核死机后,我发现这个文件夹包含一些apanic
文件。例如,如果刚刚发生内核死机,而您去检查文件夹,您可能会找到以下两个文件:
apanic_console
apanic_threads
您可以在apanic_threads
中找出发生内核死机时哪个线程/进程正在运行。在apanic_console
中,您可能会找到更多信息,如堆栈跟踪和一些关键寄存器的值:PC
、LR
等。
它们将帮助您开始调试。
https://stackoverflow.com/questions/9682306
复制相似问题