穷理者,因其所已知而及其所未知,因其所已达而及其所未达。人之良知,本所固有。然不能穷理者,只是足于已知已达,而不能穷其未知未达,故见得一截,又不曾见得一截,此其所以于理未精也。然仍须功夫日日增加。今日既格得一物,明日又格得一物,工夫更不住地做。如左脚进得一步,右脚又进一步;右脚进得一步,左脚又进,接续不已,自然贯通。
借钟馗与GDK7之合力捉”鬼“,保佑代码平安顺利、风调雨顺,再无”鬼怪出现“。
oops
当你见到oops这个单词时,第一时间想到的或许就是“哎呦*****“;同样的当你在Linux内核中碰到oops时,你也会第一时间说出“哎呦*****”,因为此时你很清楚的明白Linux内核陷入到了一场不算小的意外当中。
Linux内核发生异常后会输出的oops信息(异常相关的信息),oops信息可以辅助我们进行调试,从而找出导致Linux内核出现异常的问题所在。
oops信息内没有源代码信息,因为oops信息的产生不依赖dwarf符号,所以不能产生源代码信息
oops-tracing.txt:介绍oops信息的格式;oops-tracing.txt可以在内核源代码文件夹中的Documentation文件夹内找到,如图下图所示。
Panic机制与oops的关系
Linux内核碰到某些不严重的oops后,内核仍然可以正常运行,但是如果Linux内核碰到一些比较严重的oops后,内核将无法继续运行,同时Linux内核会进入Panic机制,而Panic机制会使系统重启。
Panic机制的关系与oops的关系如下图所示。
调试Panic
观察1号CPU的状况
将附件中的llaolao.zip复制到GDK7当中,并解压文件(具体位置无要求);进入解压得到的llaolao文件夹(cd ......),然后编译模块(make)。
//llaolao.zip:从文章https://bbs.pediy.com/thread-268593.htm的附件中下载llaolao.zip。
//llaolao:模拟内核态栈溢出,做无限递归。
将GDK7中的llaolao.ko复制到调试主机(与vmlinux处于同一文件夹下)