Master Java Debugging: Conditional Breakpoints, Drop Frame, Remote Debug & More
This guide explains essential Java debugging techniques—including conditional breakpoints, dropping to a previous stack frame, handling multithreaded breakpoints, remote debugging setup, and evaluating or modifying expressions on the fly—providing clear steps and visual examples to help developers debug more efficiently.
1. Conditional Breakpoints
In loops you can set a condition so the breakpoint only stops at a specific value, e.g., i=10.
Right‑click the red dot next to the breakpoint, choose Condition and enter the expression.
2. Drop Frame (Go Back One Step)
This technique lets you return to the previous stack frame when debugging complex nested method calls.
Click the Drop Frame icon (red arrow) to move the execution pointer back to the earlier frame.
Now the variables reflect the state at the earlier point (e.g., i becomes 99).
The term “Drop Frame” comes from the JVM’s stack‑frame model.
3. Multi‑Thread Debugging
When several threads run, breakpoints may jump between them, making debugging hard.
Set each breakpoint’s Suspend option to “Thread” instead of “All” so the breakpoint only stops the selected thread.
After configuring, you can choose the desired thread from the dropdown (give threads meaningful names).
The breakpoint now stops exactly where you expect.
4. Remote Debugging
Run the application with remote‑debug options so you can attach the IDE from another machine.
java -server -Xms512m -Xmx512m -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9081 -Djava.ext.dirs=. ${main_class}The important flags are
-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9081.
Make sure the port does not conflict and the local machine can reach the remote host.
In IntelliJ IDEA, add a Remote configuration and start it.
Set breakpoints in the source code, run the remote URL, and the breakpoint will be hit.
5. Evaluate Expressions / Change Variable Values
During a debug session you can evaluate arbitrary expressions or modify variable values on the fly.
Click the “+” icon, type an expression such as i+5, and press Enter to see the result.
To change a variable, right‑click it, choose “Set Value”, and enter the new value.
These techniques make debugging more efficient and enjoyable.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Java Backend Technology
Focus on Java-related technologies: SSM, Spring ecosystem, microservices, MySQL, MyCat, clustering, distributed systems, middleware, Linux, networking, multithreading. Occasionally cover DevOps tools like Jenkins, Nexus, Docker, and ELK. Also share technical insights from time to time, committed to Java full-stack development!
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
