Enterprise Server debugging is based on the JPDA. For more information,
see JPDA Options.

You can attach to the Enterprise Server using any JPDA compliant
debugger, including that of NetBeans, Sun Java Studio, JBuilder, Eclipse,
and so on.

You can enable debugging even when the application server is
started without the --debug option. This is useful
if you start the application server from the Windows Start Menu, or
if you want to make sure that debugging is always turned on.

To Set the Server to Automatically Start Up
in Debug Mode

Use the Admin Console. In the developer profile, select
the Enterprise Server component and the JVM Settings tab. In the cluster
profile, select the JVM Settings component under the relevant configuration.

Check the Debug Enabled box.

To specify a different port (from 9009, the default) to
use when attaching the JVM to a debugger, specify address=port-number in the Debug Options field.

Generating a Stack Trace for Debugging

To generate a Java stack trace for debugging, use the asadmin
generate-jvm-report --type=thread command. The stack trace
goes to the domain-dir/logs/server.log file and
also appears on the command prompt screen. For more information about
the asadmin generate-jvm-report command, see the Sun GlassFish Enterprise Server 2.1 Reference Manual.

Application Client Debugging

When the appclient script executes the java command to run the Application Client Container (ACC),
which in turn runs the client, it includes on the command line the
value of the VMARGS environment variable. You can
set this variable to any suitable value. The following example debugging
setup is for Windows systems:

set VMARGS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8118

For debugging an application client, you should set suspend
to y so you can connect the debugger to the client
before any code has actually executed. Otherwise, the client may start
running and execute past the point you want to examine.

You should use different ports for the server and client if
you are debugging both concurrently. For details about setting the
port, see JPDA Options.

Sun GlassFish Message Queue Debugging

Sun GlassFish Message Queue has a broker logger, which can
be useful for debugging Java Message Service (JMS) applications, including
message-driven bean applications. You can adjust the logger’s
verbosity, and you can send the logger output to the broker’s
console using the broker’s -tty option. For
more information, see the Sun Java System Message Queue 4.3 Administration Guide.

Enabling Verbose Mode

To have the server logs and messages printed to System.out on your command prompt screen, you can start the server
in verbose mode. This makes it easy to do simple debugging using print
statements, without having to view the server.log file
every time.

To start the server in verbose mode, use the --verbose option
as follows:

asadmin start-domain --user adminuser --verbose [domain-name]

On Windows platforms, you must perform an extra preparation
step if you want to use Ctrl-Break to print a thread dump. In the as-install/asenv.bat file, change AS_NATIVE_LAUNCHER="false" to AS_NATIVE_LAUNCHER="true".

When the server is in verbose mode, messages are logged to the
console or terminal window in addition to the log file. In addition,
pressing Ctrl-C stops the server and pressing Ctrl-\ (on UNIX platforms)
or Ctrl-Break (on Windows platforms) prints a thread dump. On UNIX
platforms, you can also print a thread dump using the jstack command
(see http://java.sun.com/javase/6/docs/technotes/tools/share/jstack.html) or the command kill -QUITprocess_id.

Enterprise Server Logging

You can use the Enterprise Server’s log files to help debug
your applications. Use the Admin Console. In the developer profile,
select the Enterprise Server component. In the cluster profile, select
the Stand-Alone Instances component, and select the instance from
the table. Then click the View Log Files button in the General Information
page.

To change logging settings in the developer profile, select
the Logging tab. In the cluster profile, select Logger Settings under
the relevant configuration.

For details about logging, click the Help button in the Admin Console.

Profiling Tools

You can use a profiler to perform remote profiling on the Enterprise Server to
discover bottlenecks in server-side performance. This section describes
how to configure these profilers for use with the Enterprise Server:

The NetBeans Profiler

The HPROF Profiler

The Heap and CPU Profiling Agent (HPROF) is a simple profiler
agent shipped with the Java 2 SDK. It is a dynamically linked library
that interacts with the Java Virtual Machine Profiler Interface (JVMPI)
and writes out profiling information either to a file or to a socket
in ASCII or binary format.

After HPROF is enabled using the following instructions, its
libraries are loaded into the server process.

To Use HPROF Profiling on UNIX

Use the Admin Console. In the
developer profile, select the Enterprise Server component and the JVM
Settings tab. In the cluster profile, select the JVM Settings component
under the relevant configuration. Then select the Profiler tab.

Edit the following fields:

Profiler Name – hprof

Profiler Enabled – true

Classpath – (leave blank)

Native Library
Path – (leave blank)

JVM Option – Select Add, type the HPROF JVM
option in the Value field, then check its box. The syntax of the HPROF
JVM option is as follows:

-Xrunhprof[:help]|[:param=value,param2=value2, ...]

Here is an example of params you
can use:

-Xrunhprof:file=log.txt,thread=y,depth=3

The file parameter determines where the stack
dump is written.

Using help lists parameters
that can be passed to HPROF. The output is as follows:

The JProbe Profiler

After JProbe is installed using the following instructions,
its libraries are loaded into the server process.

To Enable Remote Profiling With JProbe

Install JProbe 3.0.1.1.

For details, see
the JProbe documentation.

Configure Enterprise Server using
the Admin Console:

In the developer profile, select the Enterprise Server component
and the JVM Settings tab. In the cluster profile, select the JVM Settings
component under the relevant configuration. Then select the Profiler
tab.

Edit the following fields before selecting Save and restarting
the server:

Profiler Name – jprobe

Profiler Enabled – true

Classpath – (leave blank)

Native Library
Path – JProbe-dir/profiler

JVM Option – For each of these options, select
Add, type the option in the Value field, then check its box

-Xbootclasspath/p:JProbe-dir/profiler/jpagent.jar

-Xrunjprobeagent

-Xnoclassgc

Note –

If any of the configuration options are missing or incorrect,
the profiler might experience problems that affect the performance
of the Enterprise Server.

When the server starts up with this configuration, you can attach
the profiler.