如何解读Linux Kernel OOPS信息( 八 )


codename=$(lsb_release -cs)sudo tee /etc/apt/sources.list.d/ddebs.list << EOFdeb http://ddebs.ubuntu.com/ ${codename}main restricted universe multiversedeb http://ddebs.ubuntu.com/ ${codename}-updatesmain restricted universe multiverseEOFsudo apt-get install -y ubuntu-dbgsym-keyringsudo apt-get updatesudo apt-get install -y linux-image-$(uname -r)-dbgsym由于我们这里的oops 是发生在ko中,而不是内核 。因此,使用faddr2line指定oops_module.ko 即可 。
?kernel git:(firefly) ? scripts/faddr2line/home/zhongyi/code/module/oops_module/oops_module.ko init_oopsdemo+0x24init_oopsdemo+0x24/0x30:init_oopsdemo at /home/zhongyi/code/module/oops_module/oops_module.c:18如果oops发生在内核中,将oops_module.ko 换成对应的vmlinux即可 。
最后,贴下oops_module.c的源代码,感兴趣的大家可以自己写一个分析下 。
#include <linux/init.h>#include <linux/module.h>MODULE_LICENSE("BSD/GPL");MODULE_AUTHOR("ZHONGYI");staticint init_oopsdemo(void){printk("oops module init! \n");*((int*)0x00) = 0x19760817;return 0;}module_init(init_oopsdemo);staticvoid cleanup_oopsdemo(void){printk("oops module exit! \n");}module_exit(cleanup_oopsdemo);MODULE_LICENSE("GPL");本文参考https://www.cnblogs.com/wwang/archive/2010/11/14/1876735.html
https://www.cnblogs.com/wsg1100/p/16609905.html
https://blog.csdn.net/W1107101310/article/details/80611880
https://zhuanlan.zhihu.com/p/557455268
https://www.jianshu.com/p/53b7cabbf483http://events.jianshu.io/p/e20ee313af0e
https://www.cnblogs.com/wanglouxiaozi/p/14813475.html
https://blog.csdn.net/qq_44710568/article/details/105413270

经验总结扩展阅读