SHA256
1
0
forked from pool/kexec-tools
kexec-tools/gdb-kdump

66 lines
1.5 KiB
Bash

#!/bin/sh
#
# Start gdb for kdump crash analysis
#
# Usage: gdb-kdump [-v vmlinux] [vmcore [gdb options...]]
#
# The script starts gdb using the currently running kernel image
# and the appopriate crash dump file. If the kernel image is
# compressed, it's decompressed automatically.
#
# When no arugment is given, the latest crash dump file is probed.
#
# The script also passes the gdb macros useful for analysis of crash
# dump.
. /etc/sysconfig/kdump
bootdir="/boot"
if [ "$1" = "-v" ]; then
vmlinux="$2"
if [ ! -f "$vmlinux" ]; then
echo "Cannot find vmlinux file $vmlinux, aborting"
exit 1
fi
shift 2
else
vmlinux="$bootdir"/vmlinux-`uname -r`
if [ ! -f $vmlinux ]; then
if [ -f "$bootdir/vmlinux" ]; then
vmlinux="$bootdir/vmlinux"
elif [ -f $vmlinux.gz ]; then
if gunzip $vmlinux.gz; then
echo "Uncompressed $vmlinux.gz"
else
echo "Cannot uncompress $vmlinux.gz, aborting"
exit 1
fi
else
echo "No useful vmlinux is found in $bootdir"
exit 1
fi
fi
fi
echo "Using $vmlinux as vmlinux"
if [ -n "$1" ]; then
if [ -f "$1" ]; then
dumpfile="$1"
shift
else
echo "Dumpfile $1 cannot be found"
exit 1
fi
else
dumpfile=`ls $KDUMP_SAVEDIR/*-*-*-*:*/vmcore 2>/dev/null | sort -r | head -n 1`
if [ -n "$dumpfile" -a -f "$dumpfile" ]; then
echo "Using $dumpfile as dumpfile"
else
echo "Cannot find the latest dumpfile"
exit 1
fi
fi
exec /usr/bin/gdb --command=/usr/share/gdbinit.kdump $vmlinux $dumpfile $*