diff options
Diffstat (limited to 'examples/scripts/debugging')
| -rw-r--r-- | examples/scripts/debugging/linux/backtrace | 41 | ||||
| -rw-r--r-- | examples/scripts/debugging/solaris/README | 28 | ||||
| -rw-r--r-- | examples/scripts/debugging/solaris/solaris-oops.sh | 55 | 
3 files changed, 124 insertions, 0 deletions
| diff --git a/examples/scripts/debugging/linux/backtrace b/examples/scripts/debugging/linux/backtrace new file mode 100644 index 0000000000..2ea6a4d00a --- /dev/null +++ b/examples/scripts/debugging/linux/backtrace @@ -0,0 +1,41 @@ +#! /bin/sh +# +# Author: Andrew Tridgell <tridge at samba dot org> + +# we want everything on stderr, so the program is not disturbed +exec 1>&2 + +BASENAME=$( basename $0) + +test -z ${GDB_BIN} && GDB_BIN=$( type -p gdb) +if [ -z ${GDB_BIN} ]; then +	echo "ERROR: ${BASENAME} needs an installed gdb. " +	exit 1 +fi + +if [ -z $1 ]; then +	echo "ERROR: ${BASENAME} needs a PID. " +	exit 1 +fi +PID=$1 + +# use /dev/shm as default temp directory +test -d /dev/shm && \ +	TMP_BASE_DIR=/dev/shm || \ +	TMP_BASE_DIR=/var/tmp +TMPFILE=$( mktemp -p ${TMP_BASE_DIR} backtrace.XXXXXX) +if [ $? -ne 0 ]; then +	echo "ERROR: ${basename} can't create temp file in ${TMP_BASE_DIR}. " +	exit 1 +fi + +cat << EOF  > "${TMPFILE}" +set height 0 +up 8 +bt full +quit +EOF + +${GDB_BIN} -x "${TMPFILE}" "/proc/${PID}/exe" "${PID}" + +/bin/rm -f "${TMPFILE}" diff --git a/examples/scripts/debugging/solaris/README b/examples/scripts/debugging/solaris/README new file mode 100644 index 0000000000..9e336805e5 --- /dev/null +++ b/examples/scripts/debugging/solaris/README @@ -0,0 +1,28 @@ +Last update: John H Terpstra - June 27, 2005 + +Subject: This directory will contain debugging tools and tips. + +Notes: Identification and confirmation of some bugs can be difficult. +       When such bugs are encountered it is necessary to provide as +       sufficient detailed debugging information to assist the developer +       both by providing incontrivertable proof of the problem, but also +       precise information regarding the values of variables being processed +       at the time the problem strikes. + +       This directory is the ideal place to locate useful hints, tips and +       methods that will help Samba users to provide the information that +       developers need. + +============================ Solaris Method A ============================== +File:	 		solaris-oops.sh +Contributor: 	David Collier-Brown +Date: 			June 27, 2005 +Method and Use: +To the global stanza of smb.conf add: +	panic action = /usr/local/bin/solaris-oops.sh %d + +When the panic action is initiated a voluntary core dump file will be placed  +in /var/tmp. Use this method with "log level = 10" and an smbd binary that +has been built with the '-g' option. +============================================================================ + diff --git a/examples/scripts/debugging/solaris/solaris-oops.sh b/examples/scripts/debugging/solaris/solaris-oops.sh new file mode 100644 index 0000000000..82c49efdf6 --- /dev/null +++ b/examples/scripts/debugging/solaris/solaris-oops.sh @@ -0,0 +1,55 @@ +#!/bin/sh +# +# solaris_panic_action -- capture supporting information after a failure +# +ProgName=`basename $0` +LOGDIR=/usr/local/samba/var + +main() { +	pid=$1 + +	if [ $# -lt 1 ]; then +		say "$ProgName error: you must supply a pid" +		say "Usage: $0 pid" +		exit 1 +	fi +	cat >>$LOGDIR/log.solaris_panic_action <<! + +`date` +State information and vountary core dump for process $pid + +Related processes were: +`/usr/bin/ptree $pid` + +Stack(s) were: +`/usr/bin/pstack $pid` + +Flags were: +`/usr/bin/pflags $pid` + +Credentials were: +`/usr/bin/pcred $pid` + +Libraries used were: +`/usr/bin/pldd $pid` + +Signal-handler settings were: +`/usr/bin/psig $pid` + +Files and devices in use were: +`/usr/bin/pfiles $pid` + +Directory in use was: +`/usr/bin/pwdx $pid` + + +A voluntary core dump was placed in /var/tmp/samba_solaris_panic_action_gcore.$pid +`gcore -o /var/tmp/samba_solaris_panic_action_gcore $pid` +! +} + +say() { +	echo "$@" 1>&2 +} + +main "$@" | 
