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

来自Jack's Lab
(版本间的差异)
跳转到: 导航, 搜索
(概述)
(Reference)
 
(未显示1个用户的17个中间版本)
第1行: 第1行:
 
[[文件:Kernel-debug-log.jpg]]
 
[[文件:Kernel-debug-log.jpg]]
  
== 概述 ==
+
== 总览 ==
  
 
本页收集有 2008 - 2012 年间,移植调试 Linux 内核所遇到的典型 Bug 的调试过程
 
本页收集有 2008 - 2012 年间,移植调试 Linux 内核所遇到的典型 Bug 的调试过程
  
  
目前暂时移步:http://hi.baidu.com/comcat/archive/tag/%E8%99%AB%E8%99%AB%E4%B9%90%E5%9B%AD
+
原 Blog 页:http://hi.baidu.com/comcat
  
  
[[捉虫日记 0017:cavium octeon cn68xx mount rootfs failed]]
+
[[捉虫日记 0017: cavium octeon cn68xx mount rootfs failed]]
  
[[捉虫日记 0016:vsftpd run failed in NetLogic XLS 64bit kernel]]
+
[[捉虫日记 0016: vsftpd run failed in NetLogic XLS 64bit kernel]]
  
[[捉虫日记 0015:Freescale 8360e Gadget 插电引起 Kernel panic]]
+
[[捉虫日记 0015: Freescale 8360e Gadget 插电引起 Kernel panic]]
  
[[捉虫日记 0014:RMI XLS 启动时间偏长]]
+
[[捉虫日记 0014: RMI XLS 启动时间偏长]]
  
[[捉虫日记 0013:insmod failed on RMI XLR 最初现象的精确重现]]
+
[[捉虫日记 0013: insmod failed on RMI XLR 最初现象的精确重现]]
  
[[捉虫日记 0012:insmod failed on RMI XLR (2)]]
+
[[捉虫日记 0012: insmod failed on RMI XLR (2)]]
  
 
[[捉虫日记 0011: insmod failed on RMI XLR (1)]]
 
[[捉虫日记 0011: insmod failed on RMI XLR (1)]]
第43行: 第43行:
 
[[捉虫日记 0001: Cache initialize issue on 4KEc (MIPS32r2)]]
 
[[捉虫日记 0001: Cache initialize issue on 4KEc (MIPS32r2)]]
  
 +
<br><br>
  
 +
== 嵌入式内核开发笔记 (Kernel Development Notes) ==
  
<br><br>
+
<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>
<br><br>
+
 
<br><br>
+
== Reference ==
<br><br>
+
 
<br><br>
+
* [[MIPS 体系结构相关文集汇编]]
<br><br>
+
* [[MIPS Linux 存储管理分析札记]]
<br><br>
+
* [[MIPS Linux 上下文切换分析笔记]]
<br><br>
+
 
<br><br>
+
<br><br>
+
<br><br>
+
<br><br>
+
<br><br>
+
 
<br><br>
 
<br><br>

2025年12月10日 (三) 12:15的最后版本

Kernel-debug-log.jpg

目录

[编辑] 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

捉虫日记 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 嵌入式内核开发笔记 (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



个人工具
名字空间

变换
操作
导航
工具箱