Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
div
classnavigation
HTML Table
width100%
Table Row (tr)
Table Cell (td)
width50%
Align
alignleft
Previous
span
classsep
|
span
classtext
Intentions
Table Cell (td)
width50%
Align
alignright
Top
span
classsep
|
span
classtext
Quick Start
Info
iconfalse

TBD

1. Run debug

After you have configured a run configuration for your project you can run it in debug mode via

span
classshortcut
Shift
+
span
classshortcut
F9
shortcut.

Image Added

In Debug tool window you can see the list of frames, threads with it’s state, variables and watches. It’s worth to mention that when you select a frame you see the variables corresponding to the selected frame.

2. Useful debugger shortcuts

  • Toggle breakpoint via
    span
    classshortcut
    Ctrl
    +
    span
    classshortcut
    F8
    (
    span
    classshortcut
    Cmd
    +
    span
    classshortcut
    F8
    for Mac)
  • Resume program via
    span
    classshortcut
    F9
  • Step over via
    span
    classshortcut
    F8
  • Step into via
    span
    classshortcut
    F7
  • Stop via
    span
    classshortcut
    Ctrl
    +
    span
    classshortcut
    F2
    (
    span
    classshortcut
    Cmd
    +
    span
    classshortcut
    F2
    )
  • View breakpoint details/all breakpoints via
    span
    classshortcut
    Shift
    +
    span
    classshortcut
    Ctrl
    +
    span
    classshortcut
    F8
    (
    span
    classshortcut
    Shift
    +
    span
    classshortcut
    Ctrl
    +
    span
    classshortcut
    F8
    )
  • Debug code at caret via
    span
    classshortcut
    Shift
    +
    span
    classshortcut
    Ctrl
    +
    span
    classshortcut
    F9
    (e.g if you stay within a main method)

3. Smart step into

Sometimes it happens that you stay at a line and want to step into a particular method but not the first one which will be invoked. In this case you can use Smart step into by pressing

span
classshortcut
Ctrl
+
span
classshortcut
F7
(
span
classshortcut
Cmd
+
span
classshortcut
F7
for Mac) to choose a particular method. This is a great time-saver.

Image Added

4. Drop frame

In case if you want to “go back in time” while debugging you can do it via Drop Frame action. This is a great help if you mistakenly stepped too far. This will not revert the global state of your application but at least will get you back by stack of frames.

Image Added

5. Run to cursor

Sometimes you need to resume the program and stop on another line of code, without adding another break point. This is very easy via

span
classshortcut
Alt
+
span
classshortcut
F9
.

Image Added

6. Mark instance

If you want a particular instance to be always recognized while debug you can mark it with a colored label via

span
classshortcut
F11
or a context menu in Variables and Watches tabs.

Image Added

The next time this instance appears in Watches, Variables or Evaluate expression you will see the label.

Image Added

7. Evaluate expression

Being in debug mode you can evaluate any expression using very powerful Evaluate expression tool via

span
classshortcut
Alt
+
span
classshortcut
F8
shortcut.

Image Added

This tool provides code completion just as in the editor so it’s very easy to enter any expression.

Image Added

If you have any instances marked with labels code completion will offer you its names so you can evaluate them.

Image Added

8. Breakpoint details

If you want to change a breakpoint details you can press

span
classshortcut
Shift
+
span
classshortcut
Ctrl
+
span
classshortcut
F8
(
span
classshortcut
Shift
+
span
classshortcut
Cmd
+
span
classshortcut
F8
for Mac) shortcut. Here you can specify breakpoint condition.

!debugger_breakpoint_details_2!

To see all breakpoints in the project (with more advanced settings) press

span
classshortcut
Shift
+
span
classshortcut
Ctrl
+
span
classshortcut
F8
(
span
classshortcut
Shift
+
span
classshortcut
Cmd
+
span
classshortcut
F8
for Mac) shortcut again.

9. Field breakpoints

Additionally to conditional breakpoints you can also use Field breakpoints. These breakpoints stop when a field is accessed for read or write. To create such breakpoint just click on the gutter holding

span
classshortcut
Alt
.

Image Added

10. Action breakpoints

Another action might be useful if you want to evaluate something at particular line of code without actually making a stop. You can do that by using Action breakpoint. To create one just click on the gutter holding

span
classshortcut
Shift
.

Image Added

11. Temporary breakpoints

To create a breakpoint which stops only once you click on the gutter holding

span
classshortcut
Shift
+
span
classshortcut
Alt
.

Image Added

12. Disable breakpoints

It is also worth to know that any breakpoint can be quickly disabled by clicking on the gutter holding

span
classshortcut
Alt
.

Image Added

13. Reload changes and hot swapping

Sometimes it might happen that you need to put minor changes to your code without shutting down the process. Since Java VM has such feature as HotSwap the IDE handles these cases automatically and offers you to reload the changed classes whenever you compile the changed classes being in debug mode.

Image Added

Keep in mind that Java VM’s HotSwap has a number of constraints and does not support reloading of static fields and methods.

14. Remote debug

And final thing you definitely have to know about debugging in IntelliJ IDEA is Remote debug. Remote debug means attaching debugger to a process which is already running on a specific port on your or any other’s host. This way you can attach debugger to your application server which is running standalone.

To create a remote configuration go to Edit configurations and add Remote run configuration. Don’t forget to specify correct host and port before you run this configuration.

Image Added

15. Settings

If you want to change the default settings how debugger works you can do it via

span
classshortcut
Settings
span
classshortcut
Debugger
.

Image Added

div
classnavigation
HTML Table
width100%
Table Row (tr)
Table Cell (td)
width50%
Align
alignleft
Previous
span
classsep
|
span
classtext
Intentions
Table Cell (td)
width50%
Align
alignright
Top
span
classsep
|
span
classtext
Quick Start