0
|
1 #!/bin/ksh
|
|
2 #
|
|
3 # Copyright 2002-2004 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 #
|
|
25
|
|
26 # This script runs the test program, sagtest.java, with the regular
|
|
27 # JPDA jdi.
|
|
28 # It then starts up the debuggee part of the test, sagtarg.java,
|
|
29 # and calls gcore to create file sagcore for use in running
|
|
30 # the SA JDI client.
|
|
31
|
|
32 set -x
|
|
33 # jdk is a jdk with the vm from the sa workspace
|
|
34 while [ $# != 0 ] ; do
|
|
35 case $1 in
|
|
36 -vv)
|
|
37 set -x
|
|
38 ;;
|
|
39 -gui)
|
|
40 theClass=sun.jvm.hotspot.HSDB
|
|
41 ;;
|
|
42 -jdk)
|
|
43 jdk=$2
|
|
44 shift
|
|
45 ;;
|
|
46 -jdbx)
|
|
47 do=jdbx
|
|
48 ;;
|
|
49 -jdb)
|
|
50 do=jdb
|
|
51 ;;
|
|
52 -help | help)
|
|
53 doUsage
|
|
54 exit
|
|
55 ;;
|
|
56 -dontkill)
|
|
57 dontkill=true
|
|
58 ;;
|
|
59 -d64)
|
|
60 d64=-d64
|
|
61 ;;
|
|
62 -*)
|
|
63 javaArgs="$javaArgs $1"
|
|
64 ;;
|
|
65 *)
|
|
66 echo "$1" | grep -s '^[0-9]*$' > /dev/null
|
|
67 if [ $? = 0 ] ; then
|
|
68 # it is a pid
|
|
69 args="$args $1"
|
|
70 else
|
|
71 # It is a core.
|
|
72 # We have to pass the name of the program that produced the
|
|
73 # core, and the core file itself.
|
|
74 args="$jdk/bin/java $1"
|
|
75 fi
|
|
76 ;;
|
|
77 esac
|
|
78 shift
|
|
79 done
|
|
80
|
|
81 # First, run the sagtest.java with the regular JPDA jdi
|
|
82 workdir=./workdir
|
|
83 mkdir -p $workdir
|
|
84 CLASSPATH=$jdk/classes:$jdk/lib/tools.jar:$workdir
|
|
85 export CLASSPATH
|
|
86
|
|
87 $jdk/bin/javac -g -source 1.5 -classpath $jdk/classes:$jdk/lib/tools.jar:$workdir -J-Xms40m -d $workdir \
|
|
88 TestScaffold.java \
|
|
89 VMConnection.java \
|
|
90 TargetListener.java \
|
|
91 TargetAdapter.java \
|
|
92 sagdoit.java \
|
|
93 sagtarg.java \
|
|
94 sagtest.java
|
|
95
|
|
96 if [ $? != 0 ] ; then
|
|
97 exit 1
|
|
98 fi
|
|
99
|
|
100 $jdk/bin/java $javaArgs -Dtest.classes=$workdir sagtest
|
|
101
|
|
102 # Now run create a core file for use in running sa-jdi
|
|
103
|
|
104 if [ ! core.satest -nt sagtarg.class ] ; then
|
|
105 tmp=/tmp/sagsetup
|
|
106 rm -f $tmp
|
|
107 $jdk/bin/java $d64 sagtarg > $tmp &
|
|
108 pid=$!
|
|
109 while [ ! -s $tmp ] ; do
|
|
110 # Kludge alert!
|
|
111 sleep 2
|
|
112 done
|
|
113 #rm -f $tmp
|
|
114
|
|
115 # force core dump of the debuggee
|
|
116 OS=`uname`
|
|
117 if [ "$OS" = "Linux" ]; then
|
|
118 # Linux does not have gcore command. Instead, we use 'gdb's
|
|
119 # gcore command. Note that only some versions of gdb support
|
|
120 # gdb command.
|
|
121 echo "gcore" > gdbscript
|
|
122 gdb -batch -p $pid -x gdbscript
|
|
123 rm -f gdbscript
|
|
124 else
|
|
125 gcore $* $pid
|
|
126 fi
|
|
127 mv core.$pid sagcore
|
|
128
|
|
129 if [ "$dontkill" != "true" ]; then
|
|
130 kill -9 $pid
|
|
131 fi
|
|
132 fi
|
|
133
|