Step 1: 安装kdump and crash工具
sudo apt-get install linux-crashdump
Step 2: 安装kernel的符号文件
可以先用apt-cache命令来查看一下仓库里面哪些版本的内核有调试符号文件可以下载。
uname -r命令可以查看当前ubuntu的linux内核版本。
这样我们可以下载与当前unbuntu的linux内核版本相对应的内核调试符号文件。如果找不到,可以升级unbuntu内核到有调试符号文件下载的内核版本。
运行如下命令下载内核的调试符号文件。
sudo apt-get install linux-image-4.2.0-22-generic-dbgsym
step3 : 修改/etc/default/kdump-tools, 然后建议reboot来使能kdum.
USE_KDUMP=1
step4 : 查看kdump状态,确认kdump已经运行。
kdump-config show
step 5 : 切换到root用户通过sysrq 来trigger 一个crash.
echo 'c' > /proc/sysrq-trigger
step 6 : 系统重启后在/var/crash目录下面会生成crash文件
step 7 : 通过crash工具来分析crash文件。
sudo crash /usr/lib/debug/boot/vmlinux-4.2.0-22-generic dump.201602022239
step 8 : bt 命令来查看crash的调用栈,gdb支持的命令来查看全局变量,局部变量...