|
1 #!/bin/sh |
|
2 # |
|
3 # Copyright 2002 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 # jdb is a .c file that seems to discard the setting of CLASSPATH. |
|
27 # So, we have to run jdb by calling java directly :-( |
|
28 |
|
29 # License file for development version of dbx |
|
30 LM_LICENSE_FILE=7588@extend.eng:/usr/dist/local/config/sparcworks/license.dat:7588@setlicense |
|
31 export LM_LICENSE_FILE |
|
32 |
|
33 doUsage() |
|
34 { |
|
35 cat <<EOF |
|
36 Usage: runjdb.sh corefile -jdk jdk-pathname -sa sa-pathname |
|
37 sa-pathname is the path of a JDI-SA build dir. |
|
38 EOF |
|
39 } |
|
40 |
|
41 jdk= |
|
42 javaArgs= |
|
43 args= |
|
44 sa= |
|
45 while [ $# != 0 ] ; do |
|
46 case $1 in |
|
47 -vv) |
|
48 set -x |
|
49 ;; |
|
50 -jdk) |
|
51 jdk=$2 |
|
52 shift |
|
53 ;; |
|
54 -sa) |
|
55 sa=$2 |
|
56 shift |
|
57 ;; |
|
58 -help | help) |
|
59 doUsage |
|
60 exit |
|
61 ;; |
|
62 -*) |
|
63 javaArgs="$javaArgs $1" |
|
64 ;; |
|
65 *) |
|
66 if [ ! -z "$args" ] ; then |
|
67 echo "Error: Only one core file or pid can be specified" |
|
68 exit 1 |
|
69 fi |
|
70 echo "$1" | grep -s '^[0-9]*$' > /dev/null |
|
71 if [ $? = 0 ] ; then |
|
72 # it is a pid |
|
73 args="$args $1" |
|
74 echo "Error: A pid is not yet allowed" |
|
75 exit 1 |
|
76 else |
|
77 # It is a core. |
|
78 # We have to pass the name of the program that produced the |
|
79 # core, and the core file itself. |
|
80 args="$1" |
|
81 fi |
|
82 ;; |
|
83 esac |
|
84 shift |
|
85 done |
|
86 |
|
87 if [ -z "$jdk" ] ; then |
|
88 echo "Error: -jdk jdk-pathname is required" |
|
89 exit 1 |
|
90 fi |
|
91 if [ -z "$sa" ] ; then |
|
92 echo "Error: -sa sa-pathname is required" |
|
93 exit 1 |
|
94 fi |
|
95 |
|
96 if [ -z "$args" ] ; then |
|
97 echo "Error: a core file or pid must be specified" |
|
98 exit 1 |
|
99 fi |
|
100 |
|
101 set -x |
|
102 $jdk/bin/jdb -J-Xbootclasspath/a:$sa -connect \ |
|
103 sun.jvm.hotspot.jdi.SACoreAttachingConnector:core=$args,javaExecutable=$jdk/bin/java |
|
104 |
|
105 |
|
106 #$jdk/bin/java -Xbootclasspath/a:$mmm/ws/merlin-sa/build/agent \ |
|
107 # com.sun.tools.example.debug.tty.TTY -connect \ |
|
108 # sun.jvm.hotspot.jdi.SACoreAttachingConnector:core=sagcore,javaExecutable=$jdk/bin/java |