agent/test/jdi/runsa.sh

Thu, 14 Jan 2010 15:48:26 -0800

author
katleman
date
Thu, 14 Jan 2010 15:48:26 -0800
changeset 1565
1bc68593a110
parent 435
a61af66fc99e
child 1907
c18cbe5936b8
permissions
-rw-r--r--

Added tag jdk7-b79 for changeset a5a6adfca6ec

     1 #!/bin/ksh
     2 #
     3 # Copyright 2002-2003 Sun Microsystems, Inc.  All Rights Reserved.
     4 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     5 #
     6 # This code is free software; you can redistribute it and/or modify it
     7 # under the terms of the GNU General Public License version 2 only, as
     8 # published by the Free Software Foundation.
     9 #
    10 # This code is distributed in the hope that it will be useful, but WITHOUT
    11 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    12 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    13 # version 2 for more details (a copy is included in the LICENSE file that
    14 # accompanied this code).
    15 #
    16 # You should have received a copy of the GNU General Public License version
    17 # 2 along with this work; if not, write to the Free Software Foundation,
    18 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    19 #
    20 # Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
    21 # CA 95054 USA or visit www.sun.com if you need additional information or
    22 # have any questions.
    23 #  
    24 #
    27 # This jdk must be hopper or better; it must have the 
    28 # SA connectors in VirtualMachineManagerImpl.
    29 jdk=/java/re/jdk/1.4.1/promoted/latest/binaries/solaris-sparc
    30 #jdk=/net/mmm/export/mmm/jdk1.4fcs.sa
    32 doUsage()
    33 {
    34     cat <<EOF
    35     Run sagclient.class using Serviceability Agent to talk to a corefile/pid/debugserver.
    36     Usage:  runsa.sh [-jdk <jdk-pathname>] [-jdb] [ -jdbx ] [ -d64 ] [ -remote ] [ pid | corefile | debugserver ]
    38     -jdk means to use that jdk.  Default is 1.4.1/latest.
    39     -jdbx means to run it under jdbx
    40     -jdb means to connect using jdb instead of the sagclient program.
    41     -remote debugserver means you want to connect to a remote debug server
    43     The corefile must have been produced by the same java as is running SA.
    45 EOF
    46 }
    48 if [ $# = 0 ] ; then
    49     doUsage
    50     exit 1
    51 fi
    53 # License file for development version of dbx
    54 #LM_LICENSE_FILE=7588@extend.eng:/usr/dist/local/config/sparcworks/license.dat:7588@setlicense
    55 #export LM_LICENSE_FILE
    57 do=
    58 args=
    59 theClass=sagclient
    60 javaArgs=
    62 while [ $# != 0 ] ; do
    63     case $1 in
    64       -vv)
    65         set -x
    66         ;;
    67      -jdk)
    68         jdk=$2
    69         shift
    70         ;;
    71      -jdbx)
    72         do=jdbx
    73         ;;
    74      -jdb)
    75         do=jdb
    76         ;;
    77      -help | help)
    78         doUsage
    79         exit
    80         ;;
    81      -d64) 
    82         d64=-d64
    83         ;;
    84      -remote)
    85         shift 
    86         args="$1"
    87         do=remote
    88         ;;
    89      -*)
    90         javaArgs="$javaArgs $1"
    91         ;;
    92      *)
    93         echo "$1" | grep -s '^[0-9]*$' > /dev/null
    94         if [ $? = 0 ] ; then
    95             # it is a pid
    96             args="$args $1"
    97         else
    98             # It is a core.        
    99             # We have to pass the name of the program that produced the
   100             # core, and the core file itself.
   101             args="$jdk/bin/java $1"
   102         fi
   103         ;;
   104    esac
   105    shift
   106 done
   108 if [ -z "$jdk" ] ; then
   109     error "--Error: runsa.sh:  Must specify -jdk <jdk-pathname>."
   110     error "         Do runsa.sh -help for more info"
   111     exit 1
   112 fi
   114 set -x
   115 #setenv USE_LIBPROC_DEBUGGER "-Dsun.jvm.hotspot.debugger.useProcDebugger -Djava.library.path=$saprocdir"
   117 # If jjh makes this, then the classes are in .../build/agent.
   118 # if someone else does, they are in  .
   119 classesDir=../../../../../../build/agent
   120 if [ ! -r $classesDir ] ; then
   121     classesDir=.
   122     if [ ! -r $classesDir ] ; then
   123         echo "-- Error: runsa.sh can't find the SA classes"
   124         exit 1
   125     fi
   126 fi
   127 #javacp="/net/mmm/export/mmm/ws/sabaseline/build/solaris/solaris_sparc_compiler1/generated/sa-jdi.jar:$classesDir:$jdk/lib/tools.jar:$jdk/classes:./workdir"
   129 javacp="$jdk/lib/sa-jdi.jar:$classesDir:$jdk/lib/tools.jar:$jdk/classes:./workdir"
   132 extraArgs="-showversion $javaArgs"
   133 #extraArgs="-DdbxSvcAgentDSOPathName=/net/mmm/export/mmm/ws/m/b2/sa/src/os/solaris/agent/64bit/libsvc_agent_dbx.so $extraArgs"
   134 #extraArgs="-DdbxSvcAgentDSOPathName=/net/jano.eng/export/disk05/hotspot/sa/solaris/sparcv9/lib/libsvc_agent_dbx.so $extraArgs"
   136 mkdir -p workdir
   137 if [ sagclient.java -nt ./workdir/sagclient.class ] ; then
   138     $jdk/bin/javac -d ./workdir -classpath $javacp sagclient.java
   139     if [ $? != 0 ] ; then
   140         exit 1
   141     fi
   142 fi
   143 if [ sagdoit.java -nt ./workdir/sagdoit.class ] ; then
   144     $jdk/bin/javac -d ./workdir -classpath $javacp sagdoit.java
   145     if [ $? != 0 ] ; then
   146         exit 1
   147     fi
   148 fi
   150 if [ "$do" = jdbx ] ; then
   151     set -x
   152     dbx=/net/sparcworks.eng/export/set/sparcworks2/dbx_70_nightly/dev/buildbin/Derived-sparc-S2-opt/bin/dbx
   154     # Have to do this export for jdbx to work.  -cp and -classpath don't work.
   155     CLASSPATH=$javacp
   156     export CLASSPATH
   157     #extraArgs="-Djava.class.path=$mhs/../sa/build/agent sun.jvm.hotspot.HSDB $*"
   158     jvm_invocation="$jdk/bin/java -Xdebug \
   159                -Dsun.boot.class.path=$jdk/classes \
   160                $extraArgs"
   161     #export jvm_invocation
   163     JAVASRCPATH=$mhs/../sa/src/share/vm/agent
   164     export JAVASRCPATH
   166     #operand is pathname of .class file, eg ./jj.class.
   167     echo run $args
   168     clss=`echo $theClass | sed -e 's@\.@/@'`
   169     if [ -r ./workdir/$clss.class ] ; then
   170         # kludge for running sagclient
   171         $dbx  ./workdir/$clss.class
   172     else
   173         # kludge for running HSDB
   174         $dbx  $mhs/../sa/build/agent/$clss.class
   175     fi
   176 elif [ "$do" = jdb ] ; then
   177     # This hasn't been tested.
   178     $jdk/bin/jdb -J-Xbootclasspath/a:$classesDir -connect sun.jvm.hotspot.jdi.SACoreAttachingConnector:core=sagcore
   179 elif [ "$do" = remote ] ; then
   180     $jdk/bin/java $d64 -Djava.class.path=$javacp $extraArgs $theClass $args
   181 else
   182     $jdk/bin/java $d64 -Djava.class.path=$javacp $extraArgs $theClass $args
   184 fi

mercurial