# Linux内核调试方法 问题可以分为几类 1. crash 2. lockup, 预防比调试更重要 3. 逻辑错误或者实现错误, 运行结果不符合预期 4. 资源泄露 5. 性能不足 调试工具: 1. log and dump分析, 很多异常都会有一堆kenrel panic信息,通过这些信息可以分析出引起异常的代码 2. Tracing / Profiling, 可以用来追踪程序的运行流程 3. 交互式的debug, 例如gdb 4. debugging frameworks, 例如Ftrace, SystemTap # 触发kernel panic echo "c" > /proc/sysrq-trigger 或者通过LKDTM ##最常用的方法: 打印 *printk* 最原始的方法,不推荐使用 *pr_xx* 使用pr_xx 函数族类替代 printk, 例如 pr_emerg(), pr_alert(), pr_crit(), pr_err(), pr_warning(), pr_notice(), pr_info(), pr_debug() *dev_xx* 同样是一个函数族, dev_emerg(), dev_alert(), dev_crit(), dev_err(), dev_warn(), dev_notice(), dev_info(), dev_dbg() 需要传入strice device* 参数, 并且会打印出这个device的名字 https://www.modb.pro/db/87730