祝各位道友念头通达
GitHub Gitee 语雀 打赏

内核错误调试技巧记录

printk 打印调试

include/linux/printk.h 头文件

extern int console_printk[];
#define console_loglevel (console_printk[0])
#define default_message_loglevel (console_printk[1])
#define minimum_console_loglevel (console_printk[2])
#define default_console_loglevel (console_printk[3])
  1. 在用户空间中修改输出级别
    /proc/sys/kernel/printk
7 4 1 7

这四个值分别表示上述代码中: console_loglevel, default_message_loglevel, minimum_console_loglevel, default_console_loglevel 的值

利用KGDB

  • 如果系统挂掉也是可以在线调试
  • 需要给内核打补丁
  • 然后可以借助工具 gdb和ddd(带界面)远程调试

oops 信息和栈回溯

  • oops 就是内核出错时打印出来的信息
  • 内核出错时, 自动打印出栈调用信息,称之为栈回溯
  • 编译内核时,增加-fno-omit-frame-pointer,可以打印出寄存器等更多的信息,配合反汇编定位问题

内核堆栈API调用

  • 引入头文件 #include <asm/ptrace.h>
  • 然后调用相应的 API函数即可, 接口函数在
    • dump_stack: 打印堆栈, 接口函数在lib/dump_stack.c
posted @   韩若明瞳  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示