summaryrefslogtreecommitdiff
path: root/source3/script/tests/gdb_backtrace
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2005-08-03 05:46:43 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 11:00:23 -0500
commitc731d11471ea9edd762b4cdb67bac06e77cb6f45 (patch)
treeb253ad14fa6015c9860ad6aaed5b2fe800535e05 /source3/script/tests/gdb_backtrace
parent4dec112b8a99183e1dc01fd8cacad3ece85d21da (diff)
downloadsamba-c731d11471ea9edd762b4cdb67bac06e77cb6f45.tar.gz
samba-c731d11471ea9edd762b4cdb67bac06e77cb6f45.tar.bz2
samba-c731d11471ea9edd762b4cdb67bac06e77cb6f45.zip
r8990: First trivial example of 'make test'
(This used to be commit 11c886394970713a226d1fe46a4931ef97bb39a8)
Diffstat (limited to 'source3/script/tests/gdb_backtrace')
-rw-r--r--source3/script/tests/gdb_backtrace41
1 files changed, 41 insertions, 0 deletions
diff --git a/source3/script/tests/gdb_backtrace b/source3/script/tests/gdb_backtrace
new file mode 100644
index 0000000000..2ea6a4d00a
--- /dev/null
+++ b/source3/script/tests/gdb_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}"