GNU/Linux 内核移植捉虫笔记 (Linux Kernel Debug Notes)
(→概述) |
(→Reference) |
||
| (未显示1个用户的18个中间版本) | |||
| 第1行: | 第1行: | ||
[[文件:Kernel-debug-log.jpg]] | [[文件:Kernel-debug-log.jpg]] | ||
| − | == | + | == 总览 == |
本页收集有 2008 - 2012 年间,移植调试 Linux 内核所遇到的典型 Bug 的调试过程 | 本页收集有 2008 - 2012 年间,移植调试 Linux 内核所遇到的典型 Bug 的调试过程 | ||
| − | + | 原 Blog 页:http://hi.baidu.com/comcat | |
| − | [[捉虫日记 | + | [[捉虫日记 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)]] | ||
<br><br> | <br><br> | ||
| + | |||
| + | == 嵌入式内核开发笔记 (Kernel Development Notes) == | ||
| + | |||
| + | <br> | ||
| + | |||
| + | == Notes == | ||
| + | |||
| + | <source lang=bash> | ||
| + | # cat /proc/sys/kernel/printk | ||
| + | 7 4 1 7 | ||
| + | </source> | ||
| + | |||
| + | 对应控制台日志级别、默认消息日志级别、最低控制台日志级别、默认控制台日志级别 | ||
| + | |||
| + | 当 printk() 中的消息日志级别小于当前控制台日志级别时,printk 的信息就会在控制台上显示,printk('<0>' "xxxx") 的消息级别最高 | ||
| + | |||
| + | |||
| + | 调试消息控制台设置: | ||
| + | <source lang=bash> | ||
| + | 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 | ||
| + | </source> | ||
| + | |||
| + | |||
| + | Clear memory cache: | ||
| + | |||
| + | <source lang=bash> | ||
| + | $ echo 3 >/proc/sys/vm/drop_caches | ||
| + | </source> | ||
<br><br> | <br><br> | ||
| − | + | ||
| − | + | == Reference == | |
| − | + | ||
| − | + | * [[MIPS 体系结构相关文集汇编]] | |
| − | + | * [[MIPS Linux 存储管理分析札记]] | |
| − | + | * [[MIPS Linux 上下文切换分析笔记]] | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
<br><br> | <br><br> | ||
2025年12月10日 (三) 12:15的最后版本
目录 |
[编辑] 1 总览
本页收集有 2008 - 2012 年间,移植调试 Linux 内核所遇到的典型 Bug 的调试过程
原 Blog 页:http://hi.baidu.com/comcat
捉虫日记 0017: cavium octeon cn68xx mount rootfs failed
捉虫日记 0016: vsftpd run failed in NetLogic XLS 64bit kernel
捉虫日记 0015: Freescale 8360e Gadget 插电引起 Kernel panic
捉虫日记 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
捉虫日记 0003: MIPS Cache 操作时的奇怪现象
捉虫日记 0002: Can only write 7602176 bytes data to nand flash
捉虫日记 0001: Cache initialize issue on 4KEc (MIPS32r2)
[编辑] 2 嵌入式内核开发笔记 (Kernel Development Notes)
[编辑] 3 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
[编辑] 4 Reference
