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