How do i debug a web application running on jetty

2019-03-08 21:30发布

问题:

never done web programming before. Is there a way to set breakpoints, see variable values in eclipse? The app i want to debug makes a Query string whcih i would like to easily extract.

回答1:

Click External Tools Config,

Select program and click the new button top left. Set location to your maven binary working directory to local workspace and arguments to jetty:run

In the environment tab set the maven opts. Notice socket address = 4000 and suspend=y

The go to debug configurations and add a new remote application. Add a project name and set the socket address. Now run the External tool it should say:

Listening for transport dt_socket at address: 4000

Then you can debug the remote app and add breakpoints etc.



回答2:

I would run the application with maven using the command: mvnDebug jetty:run

And setup a remote Java application using port 8000, in Eclipse IDE.

See the 'Setting up Maven 2.0.8+' section of: http://docs.codehaus.org/display/MAVENUSER/Dealing+with+Eclipse-based+IDE



回答3:

None of the answers worked for me. Here's what did work:

  • Create Maven Eclipse Runtime for your project:
  • right-click on project -> maven build -> goals: jetty:run
  • go to JRE tab of your Maven Eclipse Runtime, and in the VM arguments section add:

-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

When you execute this runtime, the first thing the Eclipse console outputs (in blue) is:

Listening for transport dt_socket at address: 8000

Now you can create a Remote Java application Debug Runtime and connect to the debug port (8000 in this example)



回答4:

I would just expand eaykin's answer as the URL is broken.

Run the Mvn Debug as bellow...

$ mvnDebug -Dmaven.test.skip -Denvironment=dev clean jetty:run

This will wait on port 8000

Preparing to Execute Maven in Debug Mode Listening for transport dt_socket at address: 8000

Then go to the Eclipse Run --> Debug Configurations --> Remote Java Applications Define Host as 'localhost' and port as 8000 if they are not default.

If you click on the "Debug" button, this will start the application from mvn.



回答5:

"Trying to run it this way i get CreateProcess error=193, %1 is not a valid Win32 application."

On windows select mvn.bat instead of mvn.exe.



回答6:

If by any chance you are using intellij. It is way easier. Make sure you have jetty plugin installed. Then

  1. In the Maven Tab on the extreme right, expand your project
  2. Expand Plugins
  3. Expand jetty
  4. Right click on jetty:run and select 'Debug DEBUG'Click to see the screenshot for refence


回答7:

The answer for this post shows you the flags need to pass to the JVM for a remote debugger to attach.

Remote debug Jetty (no mvn, no plugins)

This is the page that explains remote debuggers for the JVM

http://docs.oracle.com/javase/1.3/docs/tooldocs/solaris/jdb.html