]> git.sur5r.net Git - bacula/bacula/commitdiff
Do some work on the btraceback on Solaris, we test to see what debugger is available...
authorMarco van Wieringen <mvw@planets.elm.net>
Sat, 24 Apr 2010 15:09:29 +0000 (17:09 +0200)
committerEric Bollengier <eric@eb.homelinux.org>
Mon, 2 Aug 2010 14:53:44 +0000 (16:53 +0200)
bacula/scripts/btraceback.dbx
bacula/scripts/btraceback.in

index 91a7d95a78f8d4eb7cc7fa62b885013be511f2cd..6c22d3c0eadfdd6bc4a1e33adf6f521cc0560888 100644 (file)
@@ -1,33 +1,45 @@
 # btraceback.dbx
 
-echo "******** RUNNING LWPS/THREADS:"
+dbxenv language_mode c++
+
+echo "exename ==> \c"; print -l (char *)exename
+echo "exepath ==> \c"; print -l (char *)exepath
+echo "catalog_db ==> \c"; print -l (char *)catalog_db
+echo "version ==> \c"; print -l (char *)version
+echo "host_os ==> \c"; print -l (char *)host_os
+echo "distname ==> \c"; print -l (char *)distname
+echo "distver ==> \c"; print -l (char *)distver
+echo "dist_name ==> \c"; print -l (char *)dist_name
+echo "beef ==> \c"; print -l (int)dist_name
+
+echo "******** RUNNING THREADS:"
 echo
-lwps
+threads
 
 echo
 echo
-echo "******** STACK TRACE OF CURRENT LWP:"
+echo "******** STACK TRACE OF CURRENT THREAD:"
 echo
 where
 
 echo
 echo
-echo "******** VARIABLES DUMP OF CURRENT LWP:"
+echo "******** VARIABLES DUMP OF CURRENT THREAD:"
 echo
 dump
 
-for LWP in 1 2 3 4 5 6 7 8; do
+for THREAD in $(threads | sh sed -e 's/.*@//' -e 's/ .*//'); do
        (
-       if lwp l@$LWP; then
+       if thread t@$THREAD; then
                echo 
                echo 
-               echo "******** STACK TRACE OF LWP ${LWP}:"
+               echo "******** STACK TRACE OF THREAD ${THREAD}:"
                echo
                where
 
                echo
                echo
-               echo "******** VARIABLES DUMP OF LWP ${LWP}:"
+               echo "******** VARIABLES DUMP OF THREAD ${THREAD}:"
                echo
                dump
                
index a9ab1a58e5ce8c2ce72d14b3b0382e20f466d5e5..7be55817c156ab7d0aa96b11ab76bb8e68b7c462 100755 (executable)
 #
 PNAME=`basename $1`
 WD="$3"
-GDB=`which gdb`
-if test `uname -s` = SunOS ; then
+case `uname -s` in
+SunOS)
+   #
+   # See what debuggers are available on this platform.
+   # We need to to some tricks to find out as a which on
+   # a non existing binary gives:
+   #
+   # no <debugger> in <PATH>
+   #
+   # So we use the return code which is 0 when it finds
+   # somethings and 1 if not.
+   #
+   which gdb > /dev/null 2>&1 && GDB=`which gdb` || GDB=''
+   which dbx > /dev/null 2>&1 && DBX=`which dbx` || DBX=''
+   which mdb > /dev/null 2>&1 && MDB=`which mdb` || MDB=''
    gcore -o ${WD}/${PNAME} $2
-   if [ -x /usr/bin/mdb ]; then
-      mdb -u -p $2 <@scriptdir@/btraceback.mdb >${WD}/bacula.$2.traceback 2>&1
-   elif [ -x /usr/bin/dbx ]; then
-      dbx $1 $2 <@scriptdir@/btraceback.dbx >${WD}/bacula.$2.traceback 2>&1
-   elif [ "x${GDB}" != "x" ]; then
-      gdb -quiet -batch -x @scriptdir@/btraceback.gdb $1 $2 >${WD}/bacula.$2.traceback 2>&1
+   if [ ! -z "${DBX}" ]; then
+      ${DBX} $1 $2 < @scriptdir@/btraceback.dbx > ${WD}/bacula.$2.traceback 2>&1
+   elif [ ! -z "${GDB}" ]; then
+      ${GDB} -quiet -batch -x @scriptdir@/btraceback.gdb $1 $2 > ${WD}/bacula.$2.traceback 2>&1
+   elif [ ! -z "${MDB}" ]; then
+      ${MDB} -u -p $2 < @scriptdir@/btraceback.mdb > ${WD}/bacula.$2.traceback 2>&1
    fi
    PNAME="${PNAME} on `hostname`"
    cat ${WD}/bacula.$2.traceback \
     | @sbindir@/bsmtp -h @smtp_host@ -f @dump_email@ -s "Bacula DBX traceback of ${PNAME}" @dump_email@
-else
+   ;;
+*)
    gdb -quiet -batch -x @scriptdir@/btraceback.gdb $1 $2 >${WD}/bacula.$2.traceback 2>&1
    PNAME="${PNAME} on `hostname`"
    cat ${WD}/bacula.$2.traceback \
     | @sbindir@/bsmtp -h @smtp_host@ -f @dump_email@ -s "Bacula GDB traceback of ${PNAME}" @dump_email@
-fi 
+esac