差别
这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
blog:linux_kernel:debug [2022/04/14 10:00] – 创建 caodan | blog:linux_kernel:debug [2022/04/21 14:57] (当前版本) – caodan | ||
---|---|---|---|
行 1: | 行 1: | ||
- | dd | + | # Linux内核调试方法 |
+ | |||
+ | 问题可以分为几类 | ||
+ | |||
+ | 1. crash | ||
+ | 2. lockup, 预防比调试更重要 | ||
+ | 3. 逻辑错误或者实现错误, 运行结果不符合预期 | ||
+ | 4. 资源泄露 | ||
+ | 5. 性能不足 | ||
+ | |||
+ | 调试工具: | ||
+ | |||
+ | 1. log and dump分析, 很多异常都会有一堆kenrel panic信息,通过这些信息可以分析出引起异常的代码 | ||
+ | 2. Tracing / Profiling, 可以用来追踪程序的运行流程 | ||
+ | 3. 交互式的debug, | ||
+ | 4. debugging frameworks, 例如Ftrace, | ||
+ | |||
+ | # 触发kernel panic | ||
+ | |||
+ | echo " | ||
+ | |||
+ | 或者通过LKDTM | ||
+ | |||
+ | ## | ||
+ | |||
+ | *printk* | ||
+ | |||
+ | 最原始的方法,不推荐使用 | ||
+ | |||
+ | |||
+ | *pr_xx* | ||
+ | |||
+ | 使用pr_xx 函数族类替代 printk, 例如 pr_emerg(), pr_alert(), pr_crit(), | ||
+ | |||
+ | *dev_xx* | ||
+ | |||
+ | 同样是一个函数族, dev_emerg(), | ||
+ | |||
+ | 需要传入strice device* 参数, 并且会打印出这个device的名字 | ||
+ | |||
+ | |||
+ | https:// | ||
+ |