." Copyright 2004 Sun Microsystems, Inc.  All Rights Reserved.
." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
."
." This code is free software; you can redistribute it and/or modify it
." under the terms of the GNU General Public License version 2 only, as
." published by the Free Software Foundation.
."
." This code is distributed in the hope that it will be useful, but WITHOUT
." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
." FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
." version 2 for more details (a copy is included in the LICENSE file that
." accompanied this code).
."
." You should have received a copy of the GNU General Public License version
." 2 along with this work; if not, write to the Free Software Foundation,
." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
."
." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
." or visit www.oracle.com if you need additional information or have any
." questions.
."
.TH jsadebugd 1 "04 May 2009"
." Generated from HTML by html2man (author: Eric Armstrong)

.LP
.SH "Name"
jsadebugd \- Serviceability Agent Debug Daemon
.LP
.SH "SYNOPSIS"
.LP

.LP
.nf
\f3
.fl
\fP\f3jsadebugd\fP pid [ server\-id ]
.fl
\f3jsadebugd\fP executable core [ server\-id ]
.fl
.fi

.LP
.SH "PARAMETERS"
.LP

.LP
.RS 3
.TP 3
pid 
process id of the process to which the debug server should attach. The process must be a Java process. To get a list of Java processes running on a machine, jps(1) may be used. At most one instance of the debug server may be attached to a single process. 
.RE

.LP
.RS 3
.TP 3
executable 
.RE

.LP
.RS 3
.TP 3
Java executable from which the core dump was produced 
.RE

.LP
.RS 3
.TP 3
core 
Core file to which the debug server should attach. 
.RE

.LP
.RS 3
.TP 3
server\-id 
Optional unique id, needed if multiple debug servers are started on the same machine. This ID must be used by remote clients to identify the particular debug server to attach. Within a single machine, this ID must be unique. 
.RE

.LP
.SH "DESCRIPTION"
.LP

.LP
.LP
\f3jsadebugd\fP attaches to a Java process or core file and acts as a debug server. Remote clients such as jstack(1), jmap(1), and jinfo(1) can attach to the server using Java Remote Method Invocation (RMI). Before starting \f2jsadebugd\fP, 
.na
\f2rmiregistry\fP @
.fi
http://java.sun.com/javase/6/docs/technotes/tools/index.html#rmi must be started with:
.LP
.RS 3

.LP
.nf
\f3
.fl
\fP\f4rmiregistry \-J\-Xbootclasspath/p:$JAVA_HOME/lib/sajdi.jar\fP\f3
.fl
\fP
.fi
.RE

.LP
.LP
where \f2$JAVA_HOME\fP is the JDK installation directory. If rmiregistry was not started, jsadebugd will start an rmiregistry in a standard (1099) port internally. Debug server may be stopped by sending SIGINT (pressing Ctrl\-C) to it.
.LP
.LP
\f3NOTE \- This utility is unsupported and may or may not be available in future versions of the JDK. In Windows Systems where dbgeng.dll is not present, 'Debugging Tools For Windows' needs to be installed to have these tools working. Also, \fP\f4PATH\fP\f3 environment variable should contain the location of \fP\f4jvm.dll\fP\f3 used by the target process or the location from which the Crash Dump file was produced.\fP
.LP
.LP
\f3For example, \fP\f4set PATH=<jdk>\\jre\\bin\\client;%PATH%\fP
.LP
.SH "SEE ALSO"
.LP
.RS 3
.TP 2
o
jinfo(1) 
.TP 2
o
jmap(1) 
.TP 2
o
jps(1) 
.TP 2
o
jstack(1) 
.TP 2
o
.na
\f2rmiregistry\fP @
.fi
http://java.sun.com/javase/6/docs/technotes/tools/index.html#rmi 
.RE

.LP

.LP
 
