最近在搞一个新的平台(loongson),一些测试程序,经常出现死机。通过ejtag可以抓取一些CPU寄存器信息。怎么分析死机的原因?大家有没有什么高招?
1. 你的平台是 什么? X86, Arm mips ?
2. linux 挂掉之前会打印 oops 信息,通过 oops 来分析.
3. ejtag可以抓取一些CPU寄存器信息
不同的架构体系 寄存器命名不一样,要先知道你的体系 !
先看Oops信息吧,会打出PC的值,这时只要结合带debug信息的vmlinux和gdb,就能找到是死在哪一行了。
mips 架构同时你可以通过 ejteg 抓到 寄存器信息:
首先 objdump -D vmlinx 反汇编你的内核
然后 你可以通过以下几个寄存器来判断:
1. epc 挂在哪个函数里
2. ra 函数的返回地址,
3. Cause 通过这个寄存器可以分析是什么类型的异常.
可以去找一本 See_MIPS_Run-2nd_edition-Chinese-All 来看看.