annotate agent/make/index.html @ 3237:399aa66d375e

Fixed a bug in which the valueEquals method was misused. The method does only check the equality of the node data and not full GVN equality by taking inputs and successors into account.
author Thomas Wuerthinger <thomas@wuerthinger.net>
date Wed, 27 Jul 2011 14:16:38 -0700
parents a61af66fc99e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 <HTML>
a61af66fc99e Initial load
duke
parents:
diff changeset
2
a61af66fc99e Initial load
duke
parents:
diff changeset
3
a61af66fc99e Initial load
duke
parents:
diff changeset
4 <HEAD>
a61af66fc99e Initial load
duke
parents:
diff changeset
5 <TITLE>
a61af66fc99e Initial load
duke
parents:
diff changeset
6 Using The HotSpot Serviceability Agent
a61af66fc99e Initial load
duke
parents:
diff changeset
7 </TITLE>
a61af66fc99e Initial load
duke
parents:
diff changeset
8 </HEAD>
a61af66fc99e Initial load
duke
parents:
diff changeset
9
a61af66fc99e Initial load
duke
parents:
diff changeset
10 <BODY TEXT="#000000" BGCOLOR="#FFFFFF">
a61af66fc99e Initial load
duke
parents:
diff changeset
11 <H1>
a61af66fc99e Initial load
duke
parents:
diff changeset
12 Using The HotSpot Serviceability Agent
a61af66fc99e Initial load
duke
parents:
diff changeset
13 </H1>
a61af66fc99e Initial load
duke
parents:
diff changeset
14
a61af66fc99e Initial load
duke
parents:
diff changeset
15 <P>
a61af66fc99e Initial load
duke
parents:
diff changeset
16 <H2>
a61af66fc99e Initial load
duke
parents:
diff changeset
17 Contents
a61af66fc99e Initial load
duke
parents:
diff changeset
18 </H2>
a61af66fc99e Initial load
duke
parents:
diff changeset
19 </P>
a61af66fc99e Initial load
duke
parents:
diff changeset
20
a61af66fc99e Initial load
duke
parents:
diff changeset
21 <UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
22 <LI> <A HREF = "#INTRODUCTION">Introduction</A>
a61af66fc99e Initial load
duke
parents:
diff changeset
23 <LI> <A HREF = "#SOURCES">Organization of the sources</A>
a61af66fc99e Initial load
duke
parents:
diff changeset
24 <LI> <A HREF = "#RUNNING">Running HSDB</A>
a61af66fc99e Initial load
duke
parents:
diff changeset
25 <LI> <A HREF = "#NOTES">Notes</A>
a61af66fc99e Initial load
duke
parents:
diff changeset
26 </UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
27
a61af66fc99e Initial load
duke
parents:
diff changeset
28 <H2>
a61af66fc99e Initial load
duke
parents:
diff changeset
29 <A NAME="INTRODUCTION">
a61af66fc99e Initial load
duke
parents:
diff changeset
30 Introduction
a61af66fc99e Initial load
duke
parents:
diff changeset
31 </A>
a61af66fc99e Initial load
duke
parents:
diff changeset
32 </H2>
a61af66fc99e Initial load
duke
parents:
diff changeset
33
a61af66fc99e Initial load
duke
parents:
diff changeset
34 <P>
a61af66fc99e Initial load
duke
parents:
diff changeset
35 The HotSpot Serviceability Agent (SA) is a set of Java APIs which
a61af66fc99e Initial load
duke
parents:
diff changeset
36 mirror the internal APIs of the HotSpot VM and which can be used to
a61af66fc99e Initial load
duke
parents:
diff changeset
37 examine the state of a HotSpot VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
38 </P>
a61af66fc99e Initial load
duke
parents:
diff changeset
39
a61af66fc99e Initial load
duke
parents:
diff changeset
40 <P>
a61af66fc99e Initial load
duke
parents:
diff changeset
41 The system understands the layout of certain VM data structures and is
a61af66fc99e Initial load
duke
parents:
diff changeset
42 able to traverse these structures in an examination-only fashion; that
a61af66fc99e Initial load
duke
parents:
diff changeset
43 is, it does not rely on being able to run code in the target VM. For
a61af66fc99e Initial load
duke
parents:
diff changeset
44 this reason it transparently works with either a running VM or a core
a61af66fc99e Initial load
duke
parents:
diff changeset
45 file.
a61af66fc99e Initial load
duke
parents:
diff changeset
46 </P>
a61af66fc99e Initial load
duke
parents:
diff changeset
47
a61af66fc99e Initial load
duke
parents:
diff changeset
48 <P>
a61af66fc99e Initial load
duke
parents:
diff changeset
49 The system can reconstruct information about Java frames on the stack
a61af66fc99e Initial load
duke
parents:
diff changeset
50 and objects in the heap. Many of the important data structures in the
a61af66fc99e Initial load
duke
parents:
diff changeset
51 VM like the CodeCache, Universe, StubQueue, Frames, and VFrames have
a61af66fc99e Initial load
duke
parents:
diff changeset
52 been exposed and have relatively complete (or at least useful)
a61af66fc99e Initial load
duke
parents:
diff changeset
53 implementations.
a61af66fc99e Initial load
duke
parents:
diff changeset
54 </P>
a61af66fc99e Initial load
duke
parents:
diff changeset
55
a61af66fc99e Initial load
duke
parents:
diff changeset
56 <P>
a61af66fc99e Initial load
duke
parents:
diff changeset
57 A small graphical debugger called HSDB (the "HotSpot Debugger") has
a61af66fc99e Initial load
duke
parents:
diff changeset
58 been written using these APIs. It provides stack memory dumps
a61af66fc99e Initial load
duke
parents:
diff changeset
59 annotated with method invocations, compiled-code inlining (if
a61af66fc99e Initial load
duke
parents:
diff changeset
60 present), interpreted vs. compiled code, interpreter codelets (if
a61af66fc99e Initial load
duke
parents:
diff changeset
61 interpreted), and live oops from oop-map information. It also provides
a61af66fc99e Initial load
duke
parents:
diff changeset
62 a tree-based oop inspector. More information will be added as
a61af66fc99e Initial load
duke
parents:
diff changeset
63 necessary; please <A HREF = "mailto:kenneth.russell@eng">send
a61af66fc99e Initial load
duke
parents:
diff changeset
64 email</A> with suggestions on what would be useful.
a61af66fc99e Initial load
duke
parents:
diff changeset
65 </P>
a61af66fc99e Initial load
duke
parents:
diff changeset
66
a61af66fc99e Initial load
duke
parents:
diff changeset
67 <P>
a61af66fc99e Initial load
duke
parents:
diff changeset
68 The SA currently only works on Solaris. It uses dbx to connect to the
a61af66fc99e Initial load
duke
parents:
diff changeset
69 remote process or core file and communicates with a small piece of
a61af66fc99e Initial load
duke
parents:
diff changeset
70 code (an "import module") loaded into the debugger.
a61af66fc99e Initial load
duke
parents:
diff changeset
71 </P>
a61af66fc99e Initial load
duke
parents:
diff changeset
72
a61af66fc99e Initial load
duke
parents:
diff changeset
73 <H2>
a61af66fc99e Initial load
duke
parents:
diff changeset
74 <A NAME="SOURCES">
a61af66fc99e Initial load
duke
parents:
diff changeset
75 Organization of the sources
a61af66fc99e Initial load
duke
parents:
diff changeset
76 </A>
a61af66fc99e Initial load
duke
parents:
diff changeset
77 </H2>
a61af66fc99e Initial load
duke
parents:
diff changeset
78
a61af66fc99e Initial load
duke
parents:
diff changeset
79 <P>
a61af66fc99e Initial load
duke
parents:
diff changeset
80 The Java-side source code, which is the bulk of the SA, is in
a61af66fc99e Initial load
duke
parents:
diff changeset
81 src/share/vm/agent. The organization of the sun.jvm.hotspot package
a61af66fc99e Initial load
duke
parents:
diff changeset
82 hierarchy mirrors the organization in the VM. This should allow
a61af66fc99e Initial load
duke
parents:
diff changeset
83 engineers familiar with the HotSpot sources to quickly understand how
a61af66fc99e Initial load
duke
parents:
diff changeset
84 the SA works and to make modifications if necessary. To build these
a61af66fc99e Initial load
duke
parents:
diff changeset
85 sources, cd to src/share/vm/agent and type "make".
a61af66fc99e Initial load
duke
parents:
diff changeset
86 </P>
a61af66fc99e Initial load
duke
parents:
diff changeset
87
a61af66fc99e Initial load
duke
parents:
diff changeset
88 <P>
a61af66fc99e Initial load
duke
parents:
diff changeset
89
a61af66fc99e Initial load
duke
parents:
diff changeset
90 The SA on Solaris works by communicating with a small piece of code
a61af66fc99e Initial load
duke
parents:
diff changeset
91 (an "import module") loaded into dbx. The source code for this import
a61af66fc99e Initial load
duke
parents:
diff changeset
92 module is in src/os/solaris/agent. To build this library, cd to
a61af66fc99e Initial load
duke
parents:
diff changeset
93 src/os/solaris/agent and type "make 32bit" or "make 64bit". The
a61af66fc99e Initial load
duke
parents:
diff changeset
94 distinction is necessary because the SPARC version of dbx ships with
a61af66fc99e Initial load
duke
parents:
diff changeset
95 two versions of its executable, and depending on which architecture
a61af66fc99e Initial load
duke
parents:
diff changeset
96 (v8 or v9) the debugger is running on selects the appropriate
a61af66fc99e Initial load
duke
parents:
diff changeset
97 executable. The SA tries the v8 version first, but if you are running
a61af66fc99e Initial load
duke
parents:
diff changeset
98 on a v9 machine you must provide both versions to the SA.
a61af66fc99e Initial load
duke
parents:
diff changeset
99 </P>
a61af66fc99e Initial load
duke
parents:
diff changeset
100
a61af66fc99e Initial load
duke
parents:
diff changeset
101 <P>
a61af66fc99e Initial load
duke
parents:
diff changeset
102
a61af66fc99e Initial load
duke
parents:
diff changeset
103 The system is currently hardwired to look on jano for its dbx
a61af66fc99e Initial load
duke
parents:
diff changeset
104 executable and import module. The relevant directory structure looks
a61af66fc99e Initial load
duke
parents:
diff changeset
105 like this:
a61af66fc99e Initial load
duke
parents:
diff changeset
106
a61af66fc99e Initial load
duke
parents:
diff changeset
107 <UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
108 <LI> .../hotspot/sa/
a61af66fc99e Initial load
duke
parents:
diff changeset
109 <UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
110 <LI> solaris/
a61af66fc99e Initial load
duke
parents:
diff changeset
111 <UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
112 <LI> sparc/
a61af66fc99e Initial load
duke
parents:
diff changeset
113 <UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
114 <LI> bin/
a61af66fc99e Initial load
duke
parents:
diff changeset
115 <UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
116 <LI> dbx: symlink to (v8) dbx 7.0 executable
a61af66fc99e Initial load
duke
parents:
diff changeset
117 </UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
118 </UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
119 <UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
120 <LI> lib/
a61af66fc99e Initial load
duke
parents:
diff changeset
121 <UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
122 <LI> libsvc_agent_dbx.so: 32-bit version of import module
a61af66fc99e Initial load
duke
parents:
diff changeset
123 </UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
124 </UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
125 <LI> sparcv9/
a61af66fc99e Initial load
duke
parents:
diff changeset
126 <UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
127 <LI> lib/
a61af66fc99e Initial load
duke
parents:
diff changeset
128 <UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
129 <LI> libsvc_agent_dbx.so: 32-bit version of import module
a61af66fc99e Initial load
duke
parents:
diff changeset
130 </UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
131 </UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
132 </UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
133 </UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
134 </UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
135 </P>
a61af66fc99e Initial load
duke
parents:
diff changeset
136
a61af66fc99e Initial load
duke
parents:
diff changeset
137 <P>
a61af66fc99e Initial load
duke
parents:
diff changeset
138 The code which builds up path names to these executables is contained
a61af66fc99e Initial load
duke
parents:
diff changeset
139 in sun.jvm.hotspot.HotSpotAgent.java. There are hardcoded paths in
a61af66fc99e Initial load
duke
parents:
diff changeset
140 this file to jano, but the rest of the system is isolated from this.
a61af66fc99e Initial load
duke
parents:
diff changeset
141 </P>
a61af66fc99e Initial load
duke
parents:
diff changeset
142
a61af66fc99e Initial load
duke
parents:
diff changeset
143 <P>
a61af66fc99e Initial load
duke
parents:
diff changeset
144 (It would be nice to have a panel in the debugger allowing
a61af66fc99e Initial load
duke
parents:
diff changeset
145 configuration of all of the known operating systems' options; right
a61af66fc99e Initial load
duke
parents:
diff changeset
146 now Solaris is the only supported OS, making that easier.)
a61af66fc99e Initial load
duke
parents:
diff changeset
147 </P>
a61af66fc99e Initial load
duke
parents:
diff changeset
148
a61af66fc99e Initial load
duke
parents:
diff changeset
149 <H2>
a61af66fc99e Initial load
duke
parents:
diff changeset
150 <A NAME="RUNNING">
a61af66fc99e Initial load
duke
parents:
diff changeset
151 Running HSDB
a61af66fc99e Initial load
duke
parents:
diff changeset
152 </A>
a61af66fc99e Initial load
duke
parents:
diff changeset
153 </H2>
a61af66fc99e Initial load
duke
parents:
diff changeset
154
a61af66fc99e Initial load
duke
parents:
diff changeset
155 <P>
a61af66fc99e Initial load
duke
parents:
diff changeset
156 An installation of HSDB has been placed on jano. To access it, add the
a61af66fc99e Initial load
duke
parents:
diff changeset
157 following directory to your PATH:
a61af66fc99e Initial load
duke
parents:
diff changeset
158 </P>
a61af66fc99e Initial load
duke
parents:
diff changeset
159
a61af66fc99e Initial load
duke
parents:
diff changeset
160 <P>
a61af66fc99e Initial load
duke
parents:
diff changeset
161 <PRE>
a61af66fc99e Initial load
duke
parents:
diff changeset
162 /net/jano/export/disk05/hotspot/sa/bin/common
a61af66fc99e Initial load
duke
parents:
diff changeset
163 </PRE>
a61af66fc99e Initial load
duke
parents:
diff changeset
164 </P>
a61af66fc99e Initial load
duke
parents:
diff changeset
165
a61af66fc99e Initial load
duke
parents:
diff changeset
166 <P>
a61af66fc99e Initial load
duke
parents:
diff changeset
167 To start the debugger, type "hsdb".
a61af66fc99e Initial load
duke
parents:
diff changeset
168 </P>
a61af66fc99e Initial load
duke
parents:
diff changeset
169
a61af66fc99e Initial load
duke
parents:
diff changeset
170 <P>
a61af66fc99e Initial load
duke
parents:
diff changeset
171 Alternatively, you can start a local build of the debugger by building
a61af66fc99e Initial load
duke
parents:
diff changeset
172 the sources in src/share/vm/agent, cd'ing to that directory, and
a61af66fc99e Initial load
duke
parents:
diff changeset
173 typing "java sun.jvm.hotspot.HSDB".
a61af66fc99e Initial load
duke
parents:
diff changeset
174 </P>
a61af66fc99e Initial load
duke
parents:
diff changeset
175
a61af66fc99e Initial load
duke
parents:
diff changeset
176 <P>
a61af66fc99e Initial load
duke
parents:
diff changeset
177 There are three modes for the debugger: attaching to a local process,
a61af66fc99e Initial load
duke
parents:
diff changeset
178 opening a core file, and attaching to a remote "debug server". The
a61af66fc99e Initial load
duke
parents:
diff changeset
179 remote case requires two programs to be running on the remote machine:
a61af66fc99e Initial load
duke
parents:
diff changeset
180 the rmiregistry (see the script "start-rmiregistry" in this directory;
a61af66fc99e Initial load
duke
parents:
diff changeset
181 run this in the background) and the debug server (see the script
a61af66fc99e Initial load
duke
parents:
diff changeset
182 "start-debug-server"), in that order. start-rmiregistry takes no
a61af66fc99e Initial load
duke
parents:
diff changeset
183 arguments; start-debug-server takes as argument the process ID or the
a61af66fc99e Initial load
duke
parents:
diff changeset
184 executable and core file names to allow remote debugging of. Make sure
a61af66fc99e Initial load
duke
parents:
diff changeset
185 you do NOT have a CLASSPATH environment variable set when you run
a61af66fc99e Initial load
duke
parents:
diff changeset
186 these scripts. (The classes put into the rmiregistry are in sun.*, and
a61af66fc99e Initial load
duke
parents:
diff changeset
187 there are permissions problems if they aren't placed on the boot
a61af66fc99e Initial load
duke
parents:
diff changeset
188 classpath.)
a61af66fc99e Initial load
duke
parents:
diff changeset
189 </P>
a61af66fc99e Initial load
duke
parents:
diff changeset
190
a61af66fc99e Initial load
duke
parents:
diff changeset
191 <P>
a61af66fc99e Initial load
duke
parents:
diff changeset
192 NOTE that the SA currently only works against VMs on Solaris/SPARC.
a61af66fc99e Initial load
duke
parents:
diff changeset
193 Remote debugging of Solaris/SPARC VMs on arbitrary platforms is
a61af66fc99e Initial load
duke
parents:
diff changeset
194 possible using the debug server; select "Connect to debug server..."
a61af66fc99e Initial load
duke
parents:
diff changeset
195 in HSDB.
a61af66fc99e Initial load
duke
parents:
diff changeset
196 </P>
a61af66fc99e Initial load
duke
parents:
diff changeset
197
a61af66fc99e Initial load
duke
parents:
diff changeset
198 <P>
a61af66fc99e Initial load
duke
parents:
diff changeset
199 Once the debugger has been launched, the threads list is displayed.
a61af66fc99e Initial load
duke
parents:
diff changeset
200 The current set of functionality allows:
a61af66fc99e Initial load
duke
parents:
diff changeset
201 </P>
a61af66fc99e Initial load
duke
parents:
diff changeset
202
a61af66fc99e Initial load
duke
parents:
diff changeset
203 <UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
204 <LI> Browsing of the annotated stack memory ("Stack Memory" button). It
a61af66fc99e Initial load
duke
parents:
diff changeset
205 is currently annotated with the following information:
a61af66fc99e Initial load
duke
parents:
diff changeset
206 <UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
207 <LI> Method names of the Java frames and their extents (supporting
a61af66fc99e Initial load
duke
parents:
diff changeset
208 inlined compiled methods)
a61af66fc99e Initial load
duke
parents:
diff changeset
209 <LI> Locations and types of oops, found using the oop map information
a61af66fc99e Initial load
duke
parents:
diff changeset
210 from compiled methods (interpreter oop maps coming soon)
a61af66fc99e Initial load
duke
parents:
diff changeset
211 <LI> If a Java frame was interrupted by a signal (e.g., because of a
a61af66fc99e Initial load
duke
parents:
diff changeset
212 crash), annotates the frame with the signal name and number
a61af66fc99e Initial load
duke
parents:
diff changeset
213 <LI> Interpreter codelet descriptions for interpreted frames
a61af66fc99e Initial load
duke
parents:
diff changeset
214 </UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
215 <LI> Finding which thread or threads caused a crash (currently
a61af66fc99e Initial load
duke
parents:
diff changeset
216 identified by the presence of a signal handler frame)
a61af66fc99e Initial load
duke
parents:
diff changeset
217 <LI> Browsing of oops using the Oop Inspector.
a61af66fc99e Initial load
duke
parents:
diff changeset
218 <LI> Browsing of the java.lang.Thread object's oop.
a61af66fc99e Initial load
duke
parents:
diff changeset
219 <LI> Object histogram and inspection of objects therein.
a61af66fc99e Initial load
duke
parents:
diff changeset
220 </UL>
a61af66fc99e Initial load
duke
parents:
diff changeset
221 </P>
a61af66fc99e Initial load
duke
parents:
diff changeset
222
a61af66fc99e Initial load
duke
parents:
diff changeset
223 <P>
a61af66fc99e Initial load
duke
parents:
diff changeset
224 More functionality is planned. Please <A HREF =
a61af66fc99e Initial load
duke
parents:
diff changeset
225 "mailto:kenneth.russell@eng">send email</A> with suggestions on what
a61af66fc99e Initial load
duke
parents:
diff changeset
226 would be useful, with any questions or comments, or if the debugger
a61af66fc99e Initial load
duke
parents:
diff changeset
227 crashes.
a61af66fc99e Initial load
duke
parents:
diff changeset
228 </P>
a61af66fc99e Initial load
duke
parents:
diff changeset
229
a61af66fc99e Initial load
duke
parents:
diff changeset
230 <H2>
a61af66fc99e Initial load
duke
parents:
diff changeset
231 <A NAME="NOTES">
a61af66fc99e Initial load
duke
parents:
diff changeset
232 Notes
a61af66fc99e Initial load
duke
parents:
diff changeset
233 </A>
a61af66fc99e Initial load
duke
parents:
diff changeset
234 </H2>
a61af66fc99e Initial load
duke
parents:
diff changeset
235
a61af66fc99e Initial load
duke
parents:
diff changeset
236 <P>
a61af66fc99e Initial load
duke
parents:
diff changeset
237 HSDB does not suspend the system at a safepoint, but at an arbitrary
a61af66fc99e Initial load
duke
parents:
diff changeset
238 point. This means that many of the invariants in the VM's code are not
a61af66fc99e Initial load
duke
parents:
diff changeset
239 followed.
a61af66fc99e Initial load
duke
parents:
diff changeset
240 </P>
a61af66fc99e Initial load
duke
parents:
diff changeset
241
a61af66fc99e Initial load
duke
parents:
diff changeset
242 <P>
a61af66fc99e Initial load
duke
parents:
diff changeset
243 As it happens, most of the places where the code ported over from the
a61af66fc99e Initial load
duke
parents:
diff changeset
244 VM has failed involve the topmost frame on the stack. Some
a61af66fc99e Initial load
duke
parents:
diff changeset
245 modifications have been made to allow the system to recognize
a61af66fc99e Initial load
duke
parents:
diff changeset
246 problematic situations.
a61af66fc99e Initial load
duke
parents:
diff changeset
247 </P>
a61af66fc99e Initial load
duke
parents:
diff changeset
248
a61af66fc99e Initial load
duke
parents:
diff changeset
249 <P>
a61af66fc99e Initial load
duke
parents:
diff changeset
250 Certainly, not all of the failure modes of the debugger have been
a61af66fc99e Initial load
duke
parents:
diff changeset
251 found. Please <A HREF = "mailto:kenneth.russell@eng">send email</A> if
a61af66fc99e Initial load
duke
parents:
diff changeset
252 HSDB throws an exception. The best debugging aid in these situations
a61af66fc99e Initial load
duke
parents:
diff changeset
253 is a core file since it is a static view of the VM to which we can
a61af66fc99e Initial load
duke
parents:
diff changeset
254 then adapt the debugger code, as opposed to having to try to suspend
a61af66fc99e Initial load
duke
parents:
diff changeset
255 the VM over and over to reproduce the failure. gcore (1) is a useful
a61af66fc99e Initial load
duke
parents:
diff changeset
256 tool. (NOTE: do not try gcore with any application using the DGA X
a61af66fc99e Initial load
duke
parents:
diff changeset
257 server extension (example: Java2Demo); the kernel will panic. See bug
a61af66fc99e Initial load
duke
parents:
diff changeset
258 4343237.)
a61af66fc99e Initial load
duke
parents:
diff changeset
259 </P>
a61af66fc99e Initial load
duke
parents:
diff changeset
260
a61af66fc99e Initial load
duke
parents:
diff changeset
261 </BODY>
a61af66fc99e Initial load
duke
parents:
diff changeset
262 </HTML>