3 了解printk

kernel log

最初学编程时,大家一定用过printf(),在kernel里有对应的函数,叫printk()。

最简单的调试方法就是用printk()印出你想知道的信息了,而前面章节讲到oops/panic时,它们就通过printk()将寄存器信息/堆栈信息打印到kernel log buffer里。

了解kernel log对问题的调试将非常重要,这里有专门的课程介绍,请看:

可以看到kernel log可以通过串口输出,也可以在发生oops/panic后将buffer保存成文件打包到db里,然后拿到串口log或db对kernel进行调试分析了。

通常手机会保留串口测试点,但要抓串口log一般都要拆机,比较麻烦。前面讲到可以将kernel log保存成文件打包在db里,db是什么东西?

AEE db

db是叫AEE(Android Exception Engine,集成在Mediatek手机软件里)的模块检查到异常并收集异常信息生成的文件,里面包含调试所需的log等关键信息。db有点像飞机的黑匣子。

对于KE来说,db里包含了如下文件(db可以通过GAT工具解开,请参考附录里的FAQ):

__exp_main.txt:异常类型,调用栈等关键信息。

_exp_detail.txt:详细异常信息

SYS_ANDROID_LOG:android main log

SYS_KERNEL_LOG:kernel log

SYS_LAST_KMSG:上次重启前的kernel log

SYS_MINI_RDUMP:类似coredump,可以用gdb/trace32调试

SYS_REBOOT_REASON:重启时的硬件记录的信息。

SYS_VERSION_INFO:kernel版本,用于和vmlinux对比,只有匹配的vmlinux才能用于分析这个异常。

SYS_WDT_LOG:看门狗复位信息

......

以上这些文件一般足以调试KE了,除非一些特别的问题需要其他信息,比如串口log等等。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值