mre*_*elt 24 logging android root linux-kernel panic
我在我的设备上使用Android Custom 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"
Run Code Online (Sandbox Code Playgroud)
我的问题是:在我强制内核恐慌以便测试它之后,即通过加载一个简单的恐慌内核模块insmod panic.ko
,似乎没有日志被写入名为oem_log的MTD (存在于我的设备上).其次,RAM在重启后也不包含日志,因为它似乎被清除 - 或者也没有写入日志.
那么如何在恐慌之后获取内核日志呢?如果有一种方法可以测试正在运行的系统上的APANIC,那将会很有帮助.也许通过使用内核调试系统?截至目前,我对此很陌生.
在此先感谢您的帮助!
h22*_*h22 27
至于我,
cat /proc/last_kmsg
Run Code Online (Sandbox Code Playgroud)
重启后(由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
Run Code Online (Sandbox Code Playgroud)
所以你至少可以试试.我在Galaxy Nexus上使用Linux 3.0.31-g4f6d371.
小智 10
在Android-7.0或更高版本上,last_kmesg日志似乎已移至:/ sys / fs / pstore / console-ramoops,因此请尝试:
cat /sys/fs/pstore/console-ramoops
Run Code Online (Sandbox Code Playgroud)
在nexus-5x上对我来说效果很好
小智 8
/data/dontpanic
文件夹怎么样?发生内核恐慌后,您可以将USB线连接到Android设备并检查该文件夹中的文件ADB
.
发现apanic
内核崩溃后,我发现此文件夹包含一些文件.例如,如果发生了内核恐慌并且你去检查文件夹,你可能会发现这两个文件:
apanic_console
apanic_threads
apanic_threads
当内核发生混乱时,您可以找到正在运行的线程/进程.在apanic_console
你可能会发现更多的信息,比如一些关键寄存器堆栈跟踪和值:PC
,LR
,等
他们将帮助您调试开始.
归档时间: |
|
查看次数: |
73511 次 |
最近记录: |