crash
Last updated
Was this helpful?
Last updated
Was this helpful?
Analyze Linux crash dump data or a live system
安装本机架构(如:x86)crash,直接通过 $ sudo apt install crash
安装即可。
安装非本机架构(如:arm64)crash,下载 , 执行 $ make target=ARM64
编译源码,即可生成 arm64 crash 可执行文件。
在 Linux Kernel Panic 时自动生成 vmcore,不需要任何操作
在用户空间手动触发生成 vmcore
通过 QEMU 手动触发生成 vmcore
vmlinux 是在编译 Linux Kernel 后生成。
vmcore 是通过 netdump, diskdump, LKCD kdump, xendump kvmdump or VMware 生成。
如果调试在线系统,直接执行 $ crash vmlinux
即可。
通过 log
查找 linux kernel panic 现场的第一行能够知道简单 panic 原因,再通过 ESR 知道更加详细的 panic 原因。
通过 log
查找 linux kernel panic pc 指针,使用 dis pc_address
显示 address 对应的汇编指令,其汇编指令对应的寄存器值都可以通过 log
的 linux kernel panic 现场得到,到这里就能够理解此指令 panic 的真正原因。再通过 dis -r pc_address
显示从函数开头到 address 的汇编指令,向上跟踪不正常寄存器值的源头。
通过 log
查找 sp 指针,使用 rd sp_address count
显示 stack 内容,从而推导 得到函数调用关系、每一个函数的参数/局部变量等。(需要熟悉 x86_64/arm64 的汇编指令、 函数进出栈原理)