xref: /freebsd-12.1/tools/debugscripts/kgdb (revision ca9ac06c)
1cf02bf24SJohn-Mark Gurney#!/bin/sh -
2cf02bf24SJohn-Mark Gurney#
3cf02bf24SJohn-Mark Gurney# Copyright 2004 John-Mark Gurney
4cf02bf24SJohn-Mark Gurney# All rights reserved.
5cf02bf24SJohn-Mark Gurney#
6cf02bf24SJohn-Mark Gurney# Redistribution and use in source and binary forms, with or without
7cf02bf24SJohn-Mark Gurney# modification, are permitted provided that the following conditions
8cf02bf24SJohn-Mark Gurney# are met:
9cf02bf24SJohn-Mark Gurney# 1. Redistributions of source code must retain the above copyright
10cf02bf24SJohn-Mark Gurney#    notice, this list of conditions and the following disclaimer.
11cf02bf24SJohn-Mark Gurney# 2. Redistributions in binary form must reproduce the above copyright
12cf02bf24SJohn-Mark Gurney#    notice, this list of conditions and the following disclaimer in the
13cf02bf24SJohn-Mark Gurney#    documentation and/or other materials provided with the distribution.
14cf02bf24SJohn-Mark Gurney#
15cf02bf24SJohn-Mark Gurney# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16cf02bf24SJohn-Mark Gurney# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17cf02bf24SJohn-Mark Gurney# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18cf02bf24SJohn-Mark Gurney# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19cf02bf24SJohn-Mark Gurney# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20cf02bf24SJohn-Mark Gurney# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21cf02bf24SJohn-Mark Gurney# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22cf02bf24SJohn-Mark Gurney# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23cf02bf24SJohn-Mark Gurney# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24cf02bf24SJohn-Mark Gurney# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25cf02bf24SJohn-Mark Gurney# SUCH DAMAGE.
26cf02bf24SJohn-Mark Gurney#
27cf02bf24SJohn-Mark Gurney# $FreeBSD$
28cf02bf24SJohn-Mark Gurney
29cf02bf24SJohn-Mark Gurneycrashpath="/var/crash"
30cf02bf24SJohn-Mark Gurneykld_debpy="kld_deb.py"
31cf02bf24SJohn-Mark Gurney
32cf02bf24SJohn-Mark Gurneyif [ x"$1" = x"-?" -o x"$1" = x"-h" ]; then
33cf02bf24SJohn-Mark Gurney	echo "Usage: $0 <corenum> [ <gdbcmdfile> [ <modulepaths> ] ]"
34cf02bf24SJohn-Mark Gurney	echo ""
35cf02bf24SJohn-Mark Gurney	echo "Path for crash dumps: $crashpath"
36cf02bf24SJohn-Mark Gurney	exit 1
37cf02bf24SJohn-Mark Gurneyfi
38cf02bf24SJohn-Mark Gurney
39cf02bf24SJohn-Mark Gurneyif [ x"$1" = x"" ]; then
40cf02bf24SJohn-Mark Gurney	echo "Need core number."
41cf02bf24SJohn-Mark Gurney	exit 1
42cf02bf24SJohn-Mark Gurneyfi
43cf02bf24SJohn-Mark Gurneycorenum="$1"
44cf02bf24SJohn-Mark Gurneyshift
45cf02bf24SJohn-Mark Gurney
46cf02bf24SJohn-Mark Gurneycmd_file=""
47cf02bf24SJohn-Mark Gurneyif [ x"$2" != x"" ]; then
48cf02bf24SJohn-Mark Gurney	cmd_file="-x $2"
49cf02bf24SJohn-Mark Gurney	shift
50cf02bf24SJohn-Mark Gurneyfi
51cf02bf24SJohn-Mark Gurney
52cf02bf24SJohn-Mark Gurneycore="$crashpath/vmcore.$corenum"
53cf02bf24SJohn-Mark Gurneyinfo="$crashpath/info.$corenum"
54cf02bf24SJohn-Mark Gurney
55cf02bf24SJohn-Mark Gurney#Get the kernel source compile dir from the info file
56cf02bf24SJohn-Mark Gurneykernsrc="`awk 'i == 1 { split($0, a, ":"); print a[2]; i = 0 } $1 == "Versionstring:" { i = 1 }' < "$info"`"
57cf02bf24SJohn-Mark Gurney
58cf02bf24SJohn-Mark Gurneytmpfile="/tmp/kgdb.asf.$$"
59cf02bf24SJohn-Mark Gurney# -mapped (broken?)
60cf02bf24SJohn-Mark Gurney# -x command_file
61cf02bf24SJohn-Mark Gurneyecho "Kernel Source:	$kernsrc"
62cf02bf24SJohn-Mark Gurneyecho "Getting KLD information and locations..."
63cf02bf24SJohn-Mark Gurneypython $kld_debpy "$kernsrc" "$core" $@ > "$tmpfile" &&
64*ca9ac06cSJohn-Mark Gurneyecho "Please run the following command to load module symbols:"
65*ca9ac06cSJohn-Mark Gurneyecho "source $tmpfile"
66*ca9ac06cSJohn-Mark Gurney(cd "$kernsrc"; kgdb "$kernsrc/kernel.debug" "$core")
67cf02bf24SJohn-Mark Gurneyrm "$tmpfile"
68