blog:linux_kernel:debug

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
blog:linux_kernel:debug [2022/04/14 10:00] – 创建 caodanblog: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, 例如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 
 + 
  • blog/linux_kernel/debug.1649901633.txt.gz
  • 最后更改: 2022/04/14 10:00
  • caodan