Home  >  Article  >  System Tutorial  >  Teach you how to capture kernel crash information

Teach you how to capture kernel crash information

WBOY
WBOYOriginal
2024-06-16 22:34:50948browse
First install the required packages:
apt-get -y install aptitude kdump-tools crash kexec-tools makedumpfile linux-image-`uname -r`-dbg 
aptitude full-upgrade # 避免运行的内核版本与调试的版本不一致导致无法调试
Kdump configuration file /etc/default/kdump-tools key part
USE_KDUMP=1
KDUMP_SYSCTL="kernel.panic_on_oops=1"
KDUMP_KERNEL=/boot/vmlinuz-3.16.0-4-amd64
KDUMP_INITRD=/boot/initrd.img-3.16.0-4-amd64
KDUMP_COREDIR="/data/crash"
KDUMP_FAIL_CMD="reboot -f"
DEBUG_KERNEL=/usr/lib/debug/vmlinux-3.16.0-4-amd64
MAKEDUMP_ARGS="-c -d 31"
KDUMP_CMDLINE="crashkernel=512M"
Crashkernel size ratio, under normal circumstances, it will automatically restart about 1 minute after the crash. Incorrect configuration will cause the restart to get stuck with a black screen.
内存大小	crashkernel=
0 - 12G	128M
13 - 48G	256M
49 - 128G	512M
129 - 256G	1G *(896M, 768M o或 512M)
Key parts of Grub configuration file/etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="nmi_watchdog=1 crashkernel=512M"

Key parts of Sysctl configuration file/etc/sysctl.conf
kernel.sysrq = 1
kernel.watchdog = 1
kernel.nmi_watchdog = 1
kernel.panic_on_oops = 1
kernel.softlockup_panic = 1
kernel.watchdog_thresh = 10
Restart to make the configuration take effect
update-grub
reboot -f
kdump-config load 
kdump-config show 
check
# cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-3.16.0-4-amd64 root=UUID=a58ab901-00aa-4f8b-b3eb-d352fc72233 ro net.ifnames=0 thash_entries=1048576 rhash_entries=1048576 biosdevname=0 nohz=off enforcing=0 ipv6.disable_ipv6=1 nmi_watchdog=1 selinux=0 transparent_hugepage=never cgroup_enable=memory swapaccount=1 vga=771 crashkernel=512M
# kdump-config test
USE_KDUMP:         1
KDUMP_SYSCTL:      kernel.panic_on_oops=1
KDUMP_COREDIR:     /data/crash
crashkernel addr:  0x2e000000
kdump kernel addr:
kdump kernel:
   /boot/vmlinuz-3.16.0-4-amd64
kdump initrd:
  /boot/initrd.img-3.16.0-4-amd64
debug kernel:
  /usr/lib/debug/vmlinux-3.16.0-4-amd64
kexec command to be used:
  /sbin/kexec -p --command-line="BOOT_IMAGE=/boot/vmlinuz-3.16.0-4-amd64 root=UUID=a58ab901-00aa-4f8b-b3eb-d352fc7f6acb ro net.ifnames=0 thash_entries=1048576 rhash_entries=1048576 biosdevname=0 nohz=off enforcing=0 ipv6.disable_ipv6=1 nmi_watchdog=1 selinux=0 transparent_hugepage=never cgroup_enable=memory swapaccount=1 vga=771 irqpoll maxcpus=1 nousb systemd.unit=kdump-tools.service crashkernel=512M" --initrd=/boot/initrd.img-3.16.0-4-amd64 /boot/vmlinuz-3.16.0-4-amd64
test
echo c > /proc/sysrq-trigger

Teach you how to capture kernel crash information

analyze
crash /data/crash/201609010252/dump.201609012233 /usr/lib/debug/lib/modules/3.16.0-4-amd64/vmlinux

Teach you how to capture kernel crash information

Start the joyful debugging journey

Teach you how to capture kernel crash information

Common errors:
WARNING: kernel version inconsistency between vmlinux and dumpfile # 版本不一致,full-upgrade 一下。
崩溃后系统不重启。 # 请检查 sysctl 、 crashkernel 及 nmi_watchdog 的设定!

The above is the detailed content of Teach you how to capture kernel crash information. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn