File: gdb_backtrace

package info (click to toggle)
samba 3.0.24-6etch10
  • links: PTS
  • area: main
  • in suites: etch
  • size: 49,836 kB
  • ctags: 44,390
  • sloc: ansic: 335,711; sh: 8,133; perl: 7,045; makefile: 3,107; python: 2,370; exp: 1,147; yacc: 881; awk: 486; csh: 58; sed: 45
file content (41 lines) | stat: -rw-r--r-- 800 bytes parent folder | download | duplicates (17)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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}"