90

I want to start debug mode for my application. But I need to start the debug mode from command prompt. Is it possible ? And will the procedure vary between tomcat 5.5 to tomcat 6.?

ROMANIA_engineer
  • 51,252
  • 26
  • 196
  • 186
Karthi
  • 1,123
  • 1
  • 9
  • 11

9 Answers9

129

On windows

$ catalina.bat jpda start
On Linux/Unix
$ catalina.sh jpda start

More info ----> https://cwiki.apache.org/confluence/display/TOMCAT/Developing

Brian J. Miller
  • 2,042
  • 1
  • 10
  • 11
Mohammad Adil
  • 44,013
  • 17
  • 87
  • 109
  • Thanks, this helped me to setup the debug option in `startup.sh`. Editing the last line in `tomcat/bin/startup.sh` to `exec "$PRGDIR"/"$EXECUTABLE" jpda start "$@"`. I always forget to start in debug mode and I can save a 5minute restart. – TomasZ. Dec 22 '17 at 08:01
57

For windows first set variables:

set JPDA_ADDRESS=8000
set JPDA_TRANSPORT=dt_socket

to start server in debug mode:

%TOMCAT_HOME%/bin/catalina.bat jpda start

For unix first export variables:

export JPDA_ADDRESS=8000
export JPDA_TRANSPORT=dt_socket

and to start server in debug mode:

%TOMCAT_HOME%/bin/catalina.sh jpda start
krzysiek.ste
  • 2,156
  • 1
  • 25
  • 24
27
  1. From your IDE, create a remote debug configuration, configure it for the default JPDA Tomcat port which is port 8000.

  2. From the command line:

    Linux:

    cd apache-tomcat/bin
    export JPDA_SUSPEND=y
    ./catalina.sh jpda run
    

    Windows:

    cd apache-tomcat\bin
    set JPDA_SUSPEND=y
    catalina.bat jpda run
    
  3. Execute the remote debug configuration from your IDE, and Tomcat will start running and you are now able to set breakpoints in the IDE.

Note:

The JPDA_SUSPEND=y line is optional, it is useful if you want that Apache Tomcat doesn't start its execution until step 3 is completed, useful if you want to troubleshoot application initialization issues.

Peter
  • 2,772
  • 2
  • 16
  • 18
Jaime Hablutzel
  • 5,838
  • 4
  • 38
  • 57
15

A short answer is to add the following options when the JVM is started.

JAVA_OPTS=" $JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8080"
Jahan Zinedine
  • 14,357
  • 5
  • 42
  • 70
  • When using JAVA_OPTS -Xdebug you need not start catalina with jpda. Otherwise you may end up with this `ERROR: Cannot load this JVM TI agent twice, check your java command line for duplicate jdwp options.` – lnarasimhan Nov 17 '17 at 21:40
6

First, Navigate to the TOMCAT-HOME/bin directory.

Then, Execute the following in the command-line:

catalina.bat jpda start

If the Tomcat server is running under Linux, just invoke the catalina.sh program

catalina.sh jpda start

It's the same for Tomcat 5.5 and Tomcat 6

Konstantin Yovkov
  • 60,548
  • 8
  • 97
  • 143
3

These instructions worked for me on apache-tomcat-8.5.20 on mac os 10.13.3 using jdk1.8.0_152:

$ cd /path/to/apache-tomcat-8.5.20/bin
$ export JPDA_ADDRESS="localhost:12321"
$ ./catalina.sh jpda run

Now connect to port 12321 from IntelliJ/Eclipse and enjoy remote debugging.

user674669
  • 8,624
  • 10
  • 67
  • 92
2

There are two ways to run tomcat in debug mode

  1. Using jdpa run

  2. Using JAVA_OPTS

First setup the environment. Then start the server using following commands.

export JPDA_ADDRESS=8000

export JPDA_TRANSPORT=dt_socket

%TOMCAT_HOME%/bin/catalina.sh jpda start

sudo catalina.sh jpda start

refer this article for more information this is clearly define it

TharinduKetipe
  • 1,018
  • 1
  • 9
  • 23
1

If you're wanting to do this via powershell on windows this worked for me

$env:JPDA_SUSPEND="y"

$env:JPDA_TRANSPORT="dt_socket"

/path/to/tomcat/bin/catalina.bat jpda start

0

Inside catalina.bat set the port on which you wish to start the debugger

if not "%JPDA_ADDRESS%" == "" goto gotJpdaAddress
set JPDA_ADDRESS=9001

Then you can simply start the debugger with

catalina.bat jpda 

Now from Eclipse or IDEA select remote debugging and start start debugging by connecting to port 9001.

Aniket Thakur
  • 63,511
  • 37
  • 265
  • 281