Tools

Getting Started with Code Execution Analysis in IntelliJ IDEA Using the Debugger

jin@catsriding.com
Jun 13, 2024
Published byJin
Getting Started with Code Execution Analysis in IntelliJ IDEA Using the Debugger

Trace Your Code with Precision Using the Debugger in IntelliJ IDEA

Debugging is more than just fixing errors—it’s a process that helps us understand the flow of code and closely observe the internal state of a running program. IntelliJ IDEA provides a powerful set of tools to support this process with precision. Being able to visually inspect how execution progresses, what values variables and objects hold, and how the stack evolves is incredibly useful when navigating complex logic and resolving issues.

In this post, we’ll focus on two essential features of the IntelliJ IDEA debugger: breakpoints and stepping. Through practical examples, we’ll explore how these tools can be applied effectively during real-world debugging sessions.

󱩖 All examples in this post were tested using IntelliJ IDEA on macOS.

1. Breakpoint: The Entry Point to Debugging

To begin debugging, we first need to specify where code execution should pause. This is done using breakpoints. Breakpoints can be set on any line of code, and once the application reaches that line, it halts execution, allowing us to examine the current flow, variable values, object states, and stack frames in detail.

  • Shortcut: ⌘ Cmd + F8
  • Click the line gutter in the code editor

Breakpoints can be added before starting the debug session or dynamically during execution. Common use cases include setting them before conditional branches, loops, or method entry points. Conditional breakpoints can also be used to pause execution only when specific criteria are met—reducing noise and focusing on the conditions you care about.

Breakpoint

Once a breakpoint is in place, launching the application in debug mode will automatically pause execution at the specified location.

Debugger Paused

At this point, you can use the debugger panel to inspect variables, navigate stack frames, and explore object properties. The layout and focus of the debug panel can be customized via right-click, allowing you to tailor the environment to your workflow.

Debugger UI

2. Stepping

Once execution is paused at a breakpoint, stepping allows you to follow the flow of code line by line. This gives you complete visibility into how each expression is evaluated and executed—especially helpful when dealing with conditionals, loops, or deeply nested method calls.

Let’s look at the core stepping features provided by IntelliJ IDEA:

Stepping Toolbar

2-1. Step Over

Step Over executes the current line and moves to the next one. If the line includes a method call, it executes the method without stepping into it, continuing on the outer scope.

Use this when the method’s internal behavior is already known or irrelevant to the current investigation—such as standard library calls or utility methods.

  • Shortcut: F8
Step Over

2-2. Step Into

Step Into enters the method call on the current line and continues stepping through its implementation line by line. This is ideal when you want to understand what a method actually does—especially if its behavior depends on runtime conditions.

  • Shortcut: F7
Step Into

When multiple methods are called on a single line, IntelliJ offers Smart Step Into to let you choose which one to enter.

Smart Step Into

2-3. Step Out

Step Out executes the rest of the current method and returns to the calling context. Use this when you’ve seen what you need inside a method and want to jump back to the outer logic.

  • Shortcut: ⇧ Shift + F8
Step Out

2-4. Run to Cursor

Run to Cursor lets you execute code from the current position up to the line where your cursor is placed—without setting a breakpoint. This is useful when you want to skip over intermediate lines and pause at a specific point of interest.

  • Shortcut: ⌥ Option + F9
Run to Cursor

2-5. Reset Frame

Reset Frame re-executes the current method from the beginning. This is especially helpful when you want to re-test a block of logic after inspecting or modifying local variables.

Reset Frame

Note that this resets only the current stack frame—it doesn’t revert external effects like file writes or database updates. Use this feature for pure logic that doesn’t rely on external side effects.

2-6. Resume Program

Resume Program continues execution from the current point until the next breakpoint (if any). It’s the most direct way to move forward when you’re done examining the current pause.

  • Shortcut: ⌥ Option + ⌘ Cmd + R
Resume Program

3. Conclusion

We’ve explored IntelliJ IDEA’s most frequently used debugging tools—breakpoints and stepping controls. These features help us deeply understand how code behaves and verify that it performs as expected.

Debugging is not just a tool for fixing problems—it’s a strategic way to confirm program correctness and reinforce structural understanding. Mastering these tools will significantly enhance your ability to reason about code and troubleshoot effectively.