DZone
Cloud Zone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
  • Refcardz
  • Trend Reports
  • Webinars
  • Zones
  • |
    • Agile
    • AI
    • Big Data
    • Cloud
    • Database
    • DevOps
    • Integration
    • IoT
    • Java
    • Microservices
    • Open Source
    • Performance
    • Security
    • Web Dev
DZone > Cloud Zone > Remote Debugging Cloud Foundry Apps

Remote Debugging Cloud Foundry Apps

This article demonstrates how to remote debug Cloud Foundry Java apps using IntelliJ Idea. This will help you learn how to discover problems more easily.

Arun Patra user avatar by
Arun Patra
·
Feb. 28, 22 · Cloud Zone · Tutorial
Like (4)
Save
Tweet
4.86K Views

Join the DZone community and get the full member experience.

Join For Free

Context

While debugging Java applications in an IDE like IntelliJ Idea is straightforward, it involves slightly more effort to debug a remotely running app. While debugging a remotely running app in production is generally not a good idea, the ability to remote debug apps in lower environments, like integration testing, may be useful.

Cloud Foundry is a platform that allows you to deploy and run your workloads easily and intuitively. IntelliJ Idea is a popular IDE, especially for Java developers.

In this article, we will see how to establish a remote debugging session with a remotely running Java Spring Boot app in Cloud Foundry. It need not be a Spring Boot app for you to attach a remote debugger. You just need to ensure that the JVM is up and running when you start your remote debugging session. A typical example is an app that exposes some REST endpoints listening on some server port like 8080. However, you won't be attaching your remote debug session with that port. You will be attaching to a different port like 5000 on which the JVM would be listening for connections from your IDE.

Preparing Your Cloud Foundry App

Prerequisites

  1. You should have a Cloud Foundry instance and a space setup. Cloud Foundry is also provided as a managed service from some public Cloud Providers. You can run Cloud Foundry on your own servers as well. See this for reference.
  2. You should have the Cloud Foundry CLI installed on your machine from where you will be initiating the deployment using the cf push command.
  3. You should have a Java Spring Boot app ready to deploy; it should compile well and if you are using a build tool like maven, you should run the mvn package command. Ensure that you use the Maven Spring Boot plugin so that all your dependencies are packaged in the deployable. You should be ready with the final jar file (assuming you are using packaging type as jar) to do the deployment.

Steps

1. Issue the following commands to log in to Cloud Foundry and push your app

 
# Provide endpoint, credentials when prompted
cf login

# Switch to your space in Cloud Foundry
cf target -s YOUR-CF-SPACE-NAME

# Push your app to cloud Foundry; This will push the app and will not start it right away
cf push -s cflinuxfs3 YOUR-CF-APP-NAME --no-start -p "full-path-to-your-jar-file"

# Set an environment variable to enable debugging for your CF app
cf set-env YOUR-CF-APP-NAME JBP_CONFIG_DEBUG '{enabled: true, port: 5000}'

# Start your app in Cloud Foundry
cf start YOUR-CF-APP-NAME

2. When your app starts, it should be ready to accept connections on the 5000 debug port. It is assumed that your app is also listening for traffic on a port like 8080 for HTTP traffic.

Setting Up IntelliJ Idea for Remote Debugging

1. It is to be noted that, your remotely running app should have ssh enabled. By default, it is enabled. If not enable SSH using the cf enable-ssh YOUR-CF-APP-NAME command.

2. You will next establish an SSH tunnel between your local machine where you will start the debugging session and your remote app using the following command.

 
cf ssh -N -T -L 5000:localhost:5000 YOUR-CF-APP-NAME

3. You are now ready to start your debugging session in IntelliJ Idea. Start IntelliJ Idea and create a Remote JVM Debug Configuration with the following settings.

Settings for remote JVM debug configuration

4. Add a breakpoint where you want to receive control when the debugging starts.

Breakpoint

5. Now select the Remote JVM Debug Configuration that you created above, and click on the green debug icon in IntelliJ Idea.Green debug icon

6. Now make the API call (or whatever triggers your logic) so that your breakpoint would be hit.

7. You would see that code execution halts at your breakpoint and you can now single step from that point in debug mode.

Troubleshooting

  • I can't establish the SSH tunnel — Ensure that the remote debug port in Cloud Foundry is the same as the debug port on your local machine.
  • My debug session won't start — Ensure that the SSH tunnel is correctly established.
  • Control is not returned to the correct debug breakpoint — Ensure that the jar deployed to Cloud Foundry was created from the code in your IDE. If the binary does not match your source code, you will get unexpected results.
  • My debugging session is very slow — If your remote machine and your local IDE are geographically distant, you may expect higher latencies.
Cloud Foundry app remote Cloud intellij Spring Framework

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • Revoking Access to JWTs With a Blacklist/Deny List
  • Artificial Intelligence (AI) And Its Assistance in Medical Diagnosis
  • Container Orchestration Tools Comparison
  • Biometric Authentication: Best Practices

Comments

Cloud Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • MVB Program
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends:

DZone.com is powered by 

AnswerHub logo