Linux系统在内核发生PANIC后,将会失去交互能力,也就无法通过常用的手段进行DEBUG,最后时刻的调用堆栈也不会被记录到系统日志中,给DEBUG带来极大的困难。通常可以通过PSTORE或者KDUMP方法来获取最后时刻的PANIC信息,这里使践一把kdump方法。
系统环境:
编译DEBUG版的内核
参照博客编译DEBUG 版的内核,用于对kcore dump文件进行调试时获取正确的符号信息,我们实验操作也是基于同版内核之上。
桌面PC/服务器 ubuntu18.04 Linux内核编译升级与机制分析_ubuntu18.04升级内核_papaofdoudou的博客-CSDN博客
请注意编译时要打开CONFIG_DEBUG_INFO宏,编译完成后,安装并重启系统。
安装KDUMP工具环境
sudo apt install kexec-tools
sudo apt install kexec-tools crash
sudo apt install linux-crashdump
sudo apt install linux-tools-$(uname -r)
sudo apt install linux-tools-common
linux-crashdump工具包含crash,kdump-tools,grub等相关依赖,安装过程中,会修改/boot/grub/grub.cfg文件,在命令行中预留KDUMP转储内核内存空间。
crashkernel=512M-:192M
crash工具是redhat开发的分析工具,功能类似于gdb, 也可以在如下地址下载: