如何迫使IntelliJ只进入我的源代码?


76

我有一个Spring MVC项目,我正在尝试使用IntelliJ进行调试。

如果在控制器代码中设置了断点,则调试将在适当的位置停止。该特定行在另一个bean中具有更多我自己的代码。我希望能够进入代码。如果在断点触发之后立即“进入”,它将进入Spring的AOP框架代码。

在此处输入图片说明

如果我立即触发相同的断点并“明智地进入”,它将使我进入源文件的第-1行(在上图中明显)。这行-1表示什么?如果我再次执行“智能介入”,则最终会到达原始断点之后的行,但从来没有被放入要介入的方法内。

我已经尝试过将Spring AOP包放入Debugger设置中。不要踏入类。但是,我最终还不得不放入事务类以及其他几个事务类。最后,我将所有Spring放入列表...以及SLF4J和一些JDBC驱动程序。

除非我使用“强制进入”之类的方法,否则如何才能使IntelliJ仅停止在项目源代码中?


6
Do not step into classes设置中,您可以使用通配符声明模式。假设您的软件包不是以org.*com.*开头的,则这可能有助于快速排除诸如和的软件包。能够!在这些模式中使用负号()将是一个完美的解决方案-我建议将其作为功能请求发送。
米哈尔Rybak的

IntelliJ IDEA有一个相关的功能要求,请投票。- IDEA-54807允许的项目设置有它自己的调试步进,并添加[只有踏进班级]生产力
CrazyCoder

Answers:


48

当前,没有一个整体选项可以仅定位用户代码(例如Visual Studio的“ Just My Code”)。

具有相同行为的最佳方法是排除不会“进入”的特定代码类或程序包(可以通过通配符为类程序包设置过滤器模式)。

这可以在Debugger / Stepping选项的Settings / Preferences中实现。


27

春季的AOP可能是最严重的违规者。

OP建议他们已经完成了此操作,但是您可以通过以下方法禁用进入指定类的步骤(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.*

请注意,您可以使用通配符禁用整个名称空间-例如,假设您组织的名称空间以开头com,则可以通过将其列入黑名单来获得大部分方式org.*


2
完美的答案!
加拉夫

真实答案!
DevWithSigns 20-10-17

4

IntelliJ ULTIMATE 2018.3使用File-> Settings->搜索'Step',如下所示: 在此处输入图片说明


3

“ Ultimate 2019.1”(可能在以前的版本中)的另一种方式:

现在进行调试时,可以右键单击视图“调试器”-“框架”中的类。然后,您可以选择“添加步进过滤器...”,并为该类添加一个新的步进过滤器。当然,您也可以在这里使用占位符“ *”等来更改新的步进滤波器...


我在社区版本中看到了此选项,但无法理解它的更改-我单击的类仍显示在框架列表中。
在线

0

完成上述更改后,请停止您的应用程序,然后再次重新进入调试模式才能生效。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.