1. Run debug
After you have configured a run configuration for your project, you can run it in debug mode by pressingShift+F9.
In Debug tool window you can see the list of frames and threads with their states, variables and watches. When you select a frame, you see the variables corresponding to the selected frame.
2. Useful debugger shortcuts
Toggle breakpoint viaCtrl+F8(Cmd+F8for Mac)
Resume program viaF9
Step over viaF8
Step into viaF7
View breakpoint details/all breakpoints viaShift+Ctrl+F8(Shift+Ctrl+F8)
Debug code at caret viaShift+Ctrl+F9(e.g if you stay within the 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 pressingShift+F7(Cmd+F7for Mac) to choose a particular method. This is a great time-saver.
4. Drop frame
In case 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.
5. Run to cursor
Sometimes you need to resume the program and stop at another line of code, without adding another break point. Easy: just pressAlt+F9.
6. Mark instance
If you want a particular instance to be always recognized while debugging, you can mark it with a colored label viaF11or the context menu in Variables and Watches tabs.
The next time this instance appears in Watches, Variables or Evaluate expression, you will see the label.
7. Evaluate expression
While in debug mode you can evaluate any expression using thevery powerful Evaluate expression tool by pressingAlt+F8.
This tool provides code completion just as in the editor so it’s very easy to enter any expression.
If you have any instances marked with labels, code completion will offer you its names so you can evaluate them.
8. Breakpoint details and condition
If you want to change a breakpoint's details, you can pressShift+Ctrl+F8(Shift+Cmd+F8for Mac). Here you can specify the breakpoint condition.
And if you have any instance marked with a label, you can use it in the condition expression as well.
To see all breakpoints in the project (with more advanced settings), pressShift+Ctrl+F8(Shift+Cmd+F8for Mac) again.
9. Field breakpoints
In addition to conditional breakpoints you can also use Field breakpoints. These breakpoints stop when a field is accessed for read or write. To create such a breakpoint, just click on the gutter while holdingAlt.
10. Action breakpoints
Another action might be useful if you want to evaluate something at a particular line of code without actually making a stop. You can do that by using the Action breakpoint. To create one, just click on the gutter while holdingShift.
11. Temporary breakpoints
To create a breakpoint which stops only once, click on the gutter while holdingShift+Alt.
12. Disable breakpoints
It's also useful to know that any breakpoint can be quickly disabled by clicking on the gutter while holdingAlt.
13. Reload changes and hot swapping
Sometimes you need to insert minor changes in your code without shutting down the process. Since the Java VM has a HotSwap feature, the IDE handles these cases automatically - it offers to reload the changed classes whenever you compile them while in debug mode.
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
The final thing you definitely should 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 the debugger to your application server which is running standalone.
To create a remote configuration, go to Edit configurations and add Remote run configuration. Make sure to specify the correct host and port before you run this configuration.
If you want to change the default debugger settings, pressSettings→Debugger.