GNU/Linux 内核移植捉虫笔记 (Linux Kernel Debug Notes)

来自Jack's Lab
2025年12月4日 (四) 11:49Comcat (讨论 | 贡献)的版本

跳转到: 导航, 搜索

Kernel-debug-log.jpg

1 总览

本页收集有 2008 - 2012 年间,移植调试 Linux 内核所遇到的典型 Bug 的调试过程


原Blog页:http://hi.baidu.com/comcat/archive/tag/%E8%99%AB%E8%99%AB%E4%B9%90%E5%9B%AD


捉虫日记 0017: cavium octeon cn68xx mount rootfs failed

捉虫日记 0016: vsftpd run failed in NetLogic XLS 64bit kernel

捉虫日记 0015: Freescale 8360e Gadget 插电引起 Kernel panic

捉虫日记 0014: RMI XLS 启动时间偏长

捉虫日记 0013: insmod failed on RMI XLR 最初现象的精确重现

捉虫日记 0012: insmod failed on RMI XLR (2)

捉虫日记 0011: insmod failed on RMI XLR (1)

捉虫日记 0010: LTP call trace on RMI XLR

捉虫日记 0009: Bad pte = 03607114, process = ???, vm_flags = 100177, vaddr = ffffffffed

捉虫日记 0008: Cache aliases issue (2)

捉虫日记 0007: Cache aliases issue (1)

捉虫日记 0006: request_module: runaway loop modprobe binfmt-464c

捉虫日记 0005: kernel panic, no oops, no stack dumped

捉虫日记 0004: jiffies stop

捉虫日记 0003: MIPS Cache 操作时的奇怪现象

捉虫日记 0002: Can only write 7602176 bytes data to nand flash

捉虫日记 0001: Cache initialize issue on 4KEc (MIPS32r2)



2 Notes

# cat /proc/sys/kernel/printk
7       4       1       7

对应控制台日志级别、默认消息日志级别、最低控制台日志级别、默认控制台日志级别

当 printk() 中的消息日志级别小于当前控制台日志级别时,printk 的信息就会在控制台上显示,printk('<0>' "xxxx") 的消息级别最高

调试消息控制台设置:

0 = KERN_EMERG      /* 系统即将崩溃 */
1 = KERN_ALERT      /* 需要立即关注 */
2 = KERN_CRIT       /* 紧急情况 */
3 = KERN_ERR        /* 错误消息 */
4 = KERN_WARNING    /* 警告消息 */
5 = KERN_NOTICE     /* 正常但需要注意 */
6 = KERN_INFO       /* 信息性消息 */
7 = KERN_DEBUG      /* 调试消息 */

# 设置控制台级别
echo 6 > /proc/sys/kernel/printk        # 只显示 0-6 级别的消息
echo 8 > /proc/sys/kernel/printk        # 显示更多调试信息
echo 0 > /proc/sys/kernel/printk        # 只显示紧急消息

dmesg -n 8  # 效果同 echo 8 > /proc/sys/kernel/printk


Clear memory cache:

 $ echo 3 >/proc/sys/vm/drop_caches







个人工具
名字空间

变换
操作
导航
工具箱