Category: Java remote debug intellij

Java remote debug intellij

Nikomuro / 18.02.2021

In this tutorial I show you a quick and easy way to debug your Java web application that is run by the Tomcat Maven plugin. There are just two short steps to this.

You have to supply the required properties to Maven, so IDEA can connect to you app white it is running. Note here, the value This is the port that we are using for remove debugging. When you start your app with the Maven Tomcat plugin, you should see something like this, that means, the app is listening for remote debugging connections:. Here click the plus sign, to add a new configuration and select Remote.

The new Remote debugging configuration is immediately created. You can give it a name, and set the port to Here is an image about how I set it up:. After you configured it, click OK, select the created configuration and start debugging with the green button that resembles a bug. These options were only required for very old JVMs so you can forget about them now. Skip to content In this tutorial I show you a quick and easy way to debug your Java web application that is run by the Tomcat Maven plugin.

Debug your Java applications in Docker using IntelliJ IDEA

Set up debugging options for Maven You have to supply the required properties to Maven, so IDEA can connect to you app white it is running. When you start your app with the Maven Tomcat plugin, you should see something like this, that means, the app is listening for remote debugging connections Post Views: 1, Run embedded Tomcat 8 in Maven.You can use special run configurations to run your application in a Docker container and see how it will behave in an environment identical to production.

But what about debugging? Well, starting from version An application running inside a Docker container is treated as a remote applicationso you can attach the debugger to it.

Now every time you run the remote debug configuration, it will run the container according to the Docker run configuration settings and then attach the debugger to the application in your container. When it hits a breakpoint, the debugger will stop and let you analyze the current state of the application, just like a normal debugging session.

This can be used for any type of Docker run configuration: whether it is based on a built Docker image, a Dockerfile, or a Docker Compose file.

This improvement enhances the Docker integration for developers who often utilize containers in their workflow. Let us know what you think about this feature in the comments below. If you have suggestions for improvement, file a ticket in YouTrack.

But I dont see my self use it often. In case i need to debug production env i would stuck to the tradintional way which is to debug a clone of my prod env which is often a stack of container and several VMs. For example if developing on a macOS host with Java 8 installed, will it be possible to remotely debug an application in a Docker container using a Java 12 image? What about alternate distributions such as alpine or OpenJ9?

Being able to do this would greatly decrease you dev-setup, and allow us to keep environment changes centralized to the containers and docker-compose scripts. Getting this working would be a big plus. Your email address will not be published.

Notify me of followup comments via e-mail. You can also subscribe without commenting. Skip to content. Follow us on Twitter: intellijidea. Bookmark the permalink. April 30, at pm. Nice… But I dont see my self use it often. Mushon says:. Anyway thanks intellij team are doing such a great product!!

java remote debug intellij

Abtin says:. May 2, at pm. June 17, at pm.Comment Recently, I was working with a Java application that was bugging me when it was running in another country USAbut it works fine when I run it on my desktop here in India.

Of course, there is no connection with the geography except that the connection is slower. Every time I had a problem which is time-consuming to reproduce on my desktop; I would log in to that computer remotely through VNC client, reproduce the problem, get the logs, diagnose, and test it again there. You may ask, "Why don't you create a similar setup of that remote machine next to your desktop?

Don't let that distract you about what I am trying to say, just forget it and assume I have to test it on a remote machine that resides in the same Intranet.

I was a having a conversation with one of my coworkers on phone about a particular problem and he said, "It will be slow but why don't you debug and see it? He is a smart guy. I knew for sure he was not asking me to switch my whole development environment to some remote machine sitting on the other side of the globe. I hung up the phone, I walked to his desk and asked him. In fact, he thought that I don't know what is debugging and he explained me everything — all that Step-Into, Step-Over, Step-Out stuff with its shortcuts.

It was easy for me to jump and say, "Dude! I know how to debug! I know many people who come for help to me do this. So I quietly listened to him and gently said, "Yep, I'm familiar with that. In case you have never done this before — here is how you do it. I will show how to do this using the Eclipse IDE, and I am very sure you are smart enough to figure out for your development setup. Let's say you have your application compiled into a jar called myapp.

Intellij Idea - Debugging

Your development machine is mydevel. Now to debug the myapp. The above command says: start myapp. I will leave that for you. Let's move on to step 2, that is configuring Eclipse. Java Debugging Checklist. The State of Debugging in Java. Over a million developers have joined DZone. Let's be friends:. How to Debug a Remote Java Application. DZone 's Guide to. The importance of being able to debug a Java application that is deployed remotely, in another country or city, cannot be understated.

Free Resource. Like Join the DZone community and get the full member experience.This post would look into how to tackle and debug issues in scenarios where they only occur in production or other remote environment but not in development environment.

It was this kind of situation I recently found myself, where, I had to rectify certain issues that were occurring in the production environment but could not be reproduced on the development machine.

Fortunately enough, the said issues could be reproduced in the testing environments which is as close to the production environment as possible. But having the issues reproducible in the test environment was good In that it confirms the issues needed to be fixed, but it was of little help in actually tracking the issues down, finding the cause and fixing it. Relying just on log outputs was not enough…What if I could debug the test environment from my machine?

It was at this stage that I thought about remote debugging and if there exist the possibility of having an application run in a remote JVM and still be able to intercept its execution from the copy of the source code running on a local IDE: sounds just like what would get the job done. And sure this is very possible.

I looked into what is needed; the set up and all. It did not sound complicated. So, together with the help of a colleague, Thijs Schnitger, was able to get it up and running without much hassles. This post thus describes the procedure of setting up the ability to remotely debug a JVM application from within an IDE.

The steps outlined below should apply with any remote JVM application and any IDE, although the exact steps may differ, the general idea would remain same. The post also gives a brief overview of the technologies that makes remote debugging possible. There are couple of ways to get the first part done and it slightly differs depending on which OS environment your Tomcat instance is running on.

But, regardless of the method used, the main idea behind the configuration remains the same; which is: pass specific start up options to the JVM that would enable remote debugging.

java remote debug intellij

Create the file if it does not exist already. And add this to the content:. Although the settings can be put directly inside catalina. It would be automatically be picked up by Tomcat. The difference between this and the recommended setting is that the -Xdebug and -Xrunjdwp option is the old way of enabling remote debugging; it applies to JVM prior to JAVA 5.

「Java」 - 工具 & IntelliJ IDEA Remote Debug

If you have Tomcat running as a windows service, then configuring Tomcat to start up with ability to be debugged remotely is done by simply specifying the start up arguments in the run properties.

Open up the Apache Tomcat properties dialog box, and under the Java tab add the required start up option:. If per chance you are not running Tomcat on Windows as a service, to enable remote debugging, you need to specify the required options in the setenv.

Start Tomcat like you would normally then do by running the catalina. But what if you want to change any of these default settings and still use the JPDA start switch? This can be done by setting the appropiate environment variable for the options as required by Tomcat. The environment variables are:. There are two ways to this configuration: The Remote Tomcat settings options or Remote settings option.

On the Server tab, specify the host details and the port the remote Tomcat is running on:. Click on Debug and specify the port you specified while configuring the Tomcat; in our case. And that is it. If all the configuration is set up correctly, you should see a notice that the IDE has successfully connected to the target VM in the Debug tab in the bottom console:. Open the Edit Configuration settings as done in the previous option but instead of selecting the Remote Tomcat, select the Remote option:.

The Remote settings dialog box appears where you can specify the required configuration; remote host, port, project etc:. As you can see from above, the interesting thing about the Remote option is that, apart from allowing you to configure intelliJ IDEA, it also list the various configurations required to start up the remote JVM in other for remote debugging to work.

Might come in handy. Specify the required settings, click Ok to save changes, and start the debugging session. You should also see the notice that IntelliJ has successfully connected to the remote VM. Once this is done, you should then open the source code of the application you have running on the remote Tomcat, put a breakpoint where required and you can go ahead and start debugging as if the application is running on your local machine.February 3, October 28, July 15, January 7, March 30, March 9, January 20, September 16, September 9, July 28, July 26, July 12, July 6, December 21, November 30, November 4, February 24, December 12, October 12, February 10, November 16, November 11, January 10, August 26, January 31, December 8, Other IDE's should have something very similar to this that will allow it to "hook" into the remote JVM and find out the calls that are being made, and to stop the code when it hits a breakpoint that you have set in the IDE.

java remote debug intellij

This command line is what is needed to start the Application Server in debug mode, see "To set the server to startup in debug mode. This code is a little different than what you get from IntelliJ, but when I was setting up my machine, I ran into a problem and using the above worked for me.

Example of the commEnv. After changing the file, start or restart your App Server. When it restarts it will be in debug mode. Congratulations, see now wasn't that simple. These are just as simple. The configuration is almost identical. In Eclipse, their debug configuration is called "Remote Java Application" which you will see after clicking the Green bug button on the toolbar.

Don't worry about this, as it is just a formality, and the only worry would be that you choose a port that is already in use. Either one of these ports will work fine for your configuration, they just have to match from on both sides. Restart your app server, set a breakpoint, and run your program in a DOS prompt, and bingo, you are stepping through code.

For more information on your IDE or App Server, please check their respective websites and other documentation. Now that you know the basics, it shouldn't be hard to find more specific information. It is one of Murphy's law, that you can't find the information you want when you need it, but after you figure it out, you find the information everywhere.Use this dialog to create a debug configuration to be used for remote debugging processes such as applications, servlets, plugin applets, and so on.

Remote debugging enables you to connect to a running JVM. These read-only fields show the command-line arguments to be used for running a remote JVM. If the Socket transport is selected, specify host where the remote process is running and to which the debugger will connect. Specify also the port on remote host to which the debugger should connect. Having selected Shared memory transport, specify the shared memory address in the text field.

This kind of transport is available for Windows only. Select this radio button is you want the debugger to run as a server for remote JVM's which will connect to it to perform debugging. In this case the Host field will be disabled if the Socket transport is selected. The Port value is considered as a port at which the debugger-"server" will listen to connections from the debugger-"clients". Use this tab to specify which log files generated while running or debugging should be displayed in the console, that is, on the dedicated tabs of the Run or Debug tool window.

Select checkboxes in this column to have the log entries displayed in the corresponding tabs in the Run tool window or Debug tool window. The read-only fields in this column list the log files to show. The list can contain:. Ant patterns that define the range of files to be displayed. Aliases to substitute for full paths or patterns.

These aliases are also displayed in the headers of the tabs where the corresponding log files are shown. If a log entry pattern defines more than one file, the tab header shows the name of the file instead of the log entry alias.

Working With Maven in IntelliJ IDEA

Select this checkbox to save the console output to the specified location. Type the path manually, or click the browse button and point to the desired location in the dialog that opens. Select this checkbox to activate the output console and bring it forward if an associated process writes to Standard.

Click this button to open the Edit Log Files Aliases dialog where you can select a new log entry and specify an alias for it. Click this button to edit the properties of the selected log file entry in the Edit Log Files Aliases dialog. When you edit a run configuration but not a run configuration templateyou can specify the following options:.

By default, it is disabled, and when you start this configuration while another instance is still running, IntelliJ IDEA suggests to stop the running instance and start another one. Save the file with the run configuration settings to share it with other team members. The default location is. However, if you do not want to share the.

Note that you cannot delete default configurations. Note that you create copies of default configurations. The button is displayed only when you select a temporary configuration. Click this button to save a temporary configuration as permanent.

The templates are displayed under the Templates node and used for newly created configurations. To create a folder, select the configurations within a category, clickand specify the folder name.

If only a category is in focus, an empty folder is created. Then, to move a configuration into a folder, between the folders or out of a folder, use drag or and buttons.

To remove grouping, select a folder and click. Click this button to sort configurations in the alphabetical order. The tasks are performed in the order they appear in the list. Run External tool : select to run an external application.


Comments

Add Comment

Leave a Reply

Your email address will not be published. Required fields are marked *