| // ======================================================================== |
| // Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd. |
| // ======================================================================== |
| // All rights reserved. This program and the accompanying materials |
| // are made available under the terms of the Eclipse Public License v1.0 |
| // and Apache License v2.0 which accompanies this distribution. |
| // |
| // The Eclipse Public License is available at |
| // http://www.eclipse.org/legal/epl-v10.html |
| // |
| // The Apache License v2.0 is available at |
| // http://www.opensource.org/licenses/apache2.0.php |
| // |
| // You may elect to redistribute this code under either of these licenses. |
| // ======================================================================== |
| |
| [[enable-remote-debugging]] |
| === Enable remote debugging |
| |
| [[remote-debugging]] |
| ==== Remote Debugging |
| |
| If you have a web application deployed into Jetty you can interact with it remotely from a debugging perspective easily. |
| The basics are that you must start up the remote JVM with additional parameters and then start up a remote debugging session in Eclipse for the webapp in question. |
| This is easily accomplished. |
| |
| ____ |
| [NOTE] |
| This example assumes you are deploying your web application into the jetty-distribution. |
| ____ |
| |
| ===== Starting Jetty |
| |
| Assuming you have your webapp deployed into jetty, there are two different ways to approach this: |
| |
| Via command line:: |
| Add the required parameters on the commandline like so. |
| + |
| [source, screen, subs="{sub-order}"] |
| .... |
| |
| $ java -Xdebug -agentlib:jdwp=transport=dt_socket,address=9999,server=y,suspend=n -jar start.jar |
| |
| |
| .... |
| |
| Via `start.ini`:: |
| This approach is best used if you want to debug a particular jetty-distribution and not have to remember the commandline incantations. |
| + |
| 1. Edit the `start.ini` and uncomment the --exec line, this is required if you are adding jvm options to the start.ini file as jetty-start must generate the classpath required and fork a new jvm. |
| 2. Add the parameters mentioned above in the Command Line option so your start.ini looks like this: |
| + |
| [source, plain, subs="{sub-order}"] |
| ---- |
| #=========================================================== |
| # Configure JVM arguments. |
| # If JVM args are include in an ini file then --exec is needed |
| # to start a new JVM from start.jar with the extra args. |
| # If you wish to avoid an extra JVM running, place JVM args |
| # on the normal command line and do not use --exec |
| #----------------------------------------------------------- |
| --exec |
| -Xdebug |
| -agentlib:jdwp=transport=dt_socket,address=9999,server=y,suspend=n |
| # -Xmx2000m |
| # -Xmn512m |
| # -XX:+UseConcMarkSweepGC |
| # -XX:ParallelCMSThreads=2 |
| # -XX:+CMSClassUnloadingEnabled |
| # -XX:+UseCMSCompactAtFullCollection |
| # -XX:CMSInitiatingOccupancyFraction=80 |
| # -verbose:gc |
| # -XX:+PrintGCDateStamps |
| # -XX:+PrintGCTimeStamps |
| # -XX:+PrintGCDetails |
| # -XX:+PrintTenuringDistribution |
| # -XX:+PrintCommandLineFlags |
| # -XX:+DisableExplicitGC |
| |
| |
| ---- |
| + |
| Uncomment any other jvm environmental options you so desire for your debugging session. |
| |
| 3. Regardless of the option chosen, you should see the following lines at the top of your jetty-distribution startup. |
| + |
| [source, plain, subs="{sub-order}"] |
| ---- |
| Listening for transport dt_socket at address: 9999 |
| |
| ---- |
| |
| ===== Linking with your IDE |
| |
| Refer to the documentation for your ide: |
| |
| * xref:debugging-with-intellij[] |
| * xref:debugging-with-eclipse[] |