1:生成的crash默认存放在:/var/crash中,控制存放位置的文件是:/var/sysconfig/kdump文件。想要查看crash需要先安装kdump工具,才会有kdump文件,opensuse中是默认不安装的。
2:crash 目录中有四个文件分别为:
linux:/var/crash/2015-01-04-14:37 # ll
total 3084144
-rw-r--r-- 1 root root 187 Jan 4 14:40 README.txt
-rw-r--r-- 1 root root 1626134 Jan 4 14:40 System.map-2.6.32.59-0.7-default
-rw------- 1 root root 3149631649 Jan 4 14:40 vmcore
-rw-r--r-- 1 root root 3801265 Jan 4 14:40 vmlinux-2.6.32.59-0.7-default.gz
linux:/var/crash/2015-01-04-14:37 #
vmcore 为crash文件;vmlinux-2.6.32.59-0.7-default.gz 压缩的 可引导的内核(应该是),gz的解压缩方式为: gunzip vmlinux-2.6.32.59-0.7-default.gz
3:下载对应版本的代码。编译带-g选项的对应版本的调试内核,加-g选项可以通过make menuconfig把调试信息打开(我编译的时候直接make就能出调试内核,没有做这个过程)。
查看自己系统的内核版本命令: uname -r
make完的包中 vmlinux为编译出来的带调试的内核,可以把vmlinx拷贝出来到crash目录中,然后在该目录中输入 crash vmcore vmlinux 。意思是用编译出来的内核 解析vmcore文件。
4:然后用bt命令查看寄存器 mod命令加载调试符号 struct 把某个地址结构解析出来
原文:http://blog.csdn.net/dinglingran/article/details/42392001