How to force IntelliJ to only step into my source code?

DebuggingIntellij Idea

Debugging Problem Overview


I have a Spring MVC project that I'm trying to debug using IntelliJ.

If I set a breakpoint in my Controller code, the debug stops at the appropriate place. That particular line has more of my own code in another bean. I'd like to be able to step into the code. If I "step into" immediately after the breakpoint riggers, it steps into Spring's AOP framework code.

enter image description here

If I trigger the same breakpoint and "smart step into" immediately, it puts me at line -1 of the source file (apparent in the graphic above). What is this line -1 signify? If I do "smart step into" again, I end up at the line after my original breakpoint, but never having been placed inside the method I wanted to step into.

I have tried putting the Spring AOP package into the Debugger setting Do not step into the classes. However, I also ended up having to put in transaction classes as well as several others. In the end, I put all of Spring into the list ... and SLF4J and some JDBC drivers.

How can I just get IntelliJ to only stop in my project source code unless I use something like "force step into"?

Debugging Solutions


Solution 1 - Debugging

Currently there is no overall option to only target user code (like Visual Studio's 'Just My Code').

The best way to have the same behavior is to exclude specific code classes or packages (it is possible to setup filter patterns for class packages via wildcards) that will not be 'stepped into'.

This can be achieved within the Settings/Preferences, in the Debugger/Stepping options.

Solution 2 - Debugging

Spring's AOP may be among the worst offenders.

The OP suggested that they had already done this, but here's how you can disable stepping into specified classes (IntelliJ ULTIMATE 2018.2):

File -> Settings... -> Build, Execution, Deployment -> Debugger -> Stepping

... Do not step into the classes -> Add Pattern -> Enter the filter pattern:

... ... org.springframework.aop.*

Notice that you can use wildcards to disable entire namespaces -- so for example, assuming that your organization's namespace starts with com, you can get most of the way there by blacklisting org.*.

Solution 3 - Debugging

IntelliJ ULTIMATE 2018.3 Using File -> Settings -> search 'Step' as follow: enter image description here

Solution 4 - Debugging

Another way in "Ultimate 2019.1" (may be also in previous versions):

When you're right now debugging you can make a right mouse click on a class in the view "Debugger" - "Frames". Then you can select "Add stepping filter..." and adding for that class a new step filter. Of course you can here also change the new step filter, using place holder "*" and so on ...

Solution 5 - Debugging

After the changes mentioned above, stop your application and restart into debug mode again to take effect.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questiondbrown0708View Question on Stackoverflow
Solution 1 - DebuggingacoelhosantosView Answer on Stackoverflow
Solution 2 - DebuggingBrent BradburnView Answer on Stackoverflow
Solution 3 - Debugginghuoxudong125View Answer on Stackoverflow
Solution 4 - DebuggingSteffenView Answer on Stackoverflow
Solution 5 - DebuggingWesternGunView Answer on Stackoverflow