navigation、linux、内核、网络技术、网卡驱动、qt、android、ios、irrlicht、ogre
分类: LINUX
2013-04-09 14:37:20
kdump,kexec-tools ,kernel-debuginfo
可以使用 rpm -qa | grep kdump, rpm -qa | grep kexec, rpm -qa | grep debuginfo分别查询是否安装了对应的包。
我的系统是CentOS6.3,发现前两个包都安装了,只需要下载debuginfo对应的包即可。
这里下载了两个包,
kernel-uek-debuginfo-common-2.6.39-200.24.1.el6uek.x86_64.rpm
kernel-uek-debuginfo-2.6.39-200.24.1.el6uek.x86_64.rpm, 下载地址是
二、启动kdunp
1、修改grub.conf,在对应的启动内核参数上加上crashkernel=128M,注意在CentOS6.3上必须是crashkernel=128M,而不是传说中的crashkernel=128M@16M,否则重启后还是启动不了kdump
2、设置kdump服务开机是自动启动 chkconfig kdump on
3、重启机器,可以尝试着service kdump restart
三、测试
通过sysrq强制系统崩溃
echo “c” > /proc/sysrq-trigger
这样系统会奔溃并且重启,重启后会发现/var/crash 下面会有个带有时间的目录,目录下面就是生成的vmcore文件。由于我们安装了debuginfo,会生成这个目录
/usr/lib/debug/lib/modules/2.6.39-200.24.1.el6uek.x86_64/,我们可以这样来调试vmcore文件,这类会把详细的栈信息打印出来
#crash /usr/lib/debug/lib/modules/2.6.39-200.24.1.el6uek.x86_64/vmlinux vmcore
四、调试自己的内核驱动
加载自己的内核驱动,然后启动,等待内核panic并且死机,重启后找到vmcore