| Line | |
|---|
| 1 | #! /bin/sh
|
|---|
| 2 | #
|
|---|
| 3 | # Author: Andrew Tridgell <tridge at samba dot org>
|
|---|
| 4 |
|
|---|
| 5 | # we want everything on stderr, so the program is not disturbed
|
|---|
| 6 | exec 1>&2
|
|---|
| 7 |
|
|---|
| 8 | BASENAME=$( basename $0)
|
|---|
| 9 |
|
|---|
| 10 | test -z ${GDB_BIN} && GDB_BIN=$( type -p gdb)
|
|---|
| 11 | if [ -z ${GDB_BIN} ]; then
|
|---|
| 12 | echo "ERROR: ${BASENAME} needs an installed gdb. "
|
|---|
| 13 | exit 1
|
|---|
| 14 | fi
|
|---|
| 15 |
|
|---|
| 16 | if [ -z $1 ]; then
|
|---|
| 17 | echo "ERROR: ${BASENAME} needs a PID. "
|
|---|
| 18 | exit 1
|
|---|
| 19 | fi
|
|---|
| 20 | PID=$1
|
|---|
| 21 |
|
|---|
| 22 | # use /dev/shm as default temp directory
|
|---|
| 23 | test -d /dev/shm && \
|
|---|
| 24 | TMP_BASE_DIR=/dev/shm || \
|
|---|
| 25 | TMP_BASE_DIR=/var/tmp
|
|---|
| 26 | TMPFILE=$( mktemp -p ${TMP_BASE_DIR} backtrace.XXXXXX)
|
|---|
| 27 | if [ $? -ne 0 ]; then
|
|---|
| 28 | echo "ERROR: ${basename} can't create temp file in ${TMP_BASE_DIR}. "
|
|---|
| 29 | exit 1
|
|---|
| 30 | fi
|
|---|
| 31 |
|
|---|
| 32 | cat << EOF > "${TMPFILE}"
|
|---|
| 33 | set height 0
|
|---|
| 34 | up 8
|
|---|
| 35 | bt full
|
|---|
| 36 | quit
|
|---|
| 37 | EOF
|
|---|
| 38 |
|
|---|
| 39 | ${GDB_BIN} -x "${TMPFILE}" "/proc/${PID}/exe" "${PID}"
|
|---|
| 40 |
|
|---|
| 41 | /bin/rm -f "${TMPFILE}"
|
|---|
Note:
See
TracBrowser
for help on using the repository browser.