如何在Intellij想法调试中跳过行?

时间:2013-07-04 05:27:44

标签: java debugging intellij-idea

假设我有这样的java代码(仅作为示例):

public void someMethod(){
    int a = 3;
    int b = 2; // <-- stay debug here
    a = b + 2;
    System.out.prinln(a);
}

可以跳过执行“int a = b + 2;”并且不动地去“System.out.prinln(a);”?

P.S。我使用Intellij Idea 12。

6 个答案:

答案 0 :(得分:27)

调试器无法执行部分代码。

然而,可以执行额外的代码并更改变量的值,因此如果您需要在调试期间从执行中排除一行,则必须更改代码以准备进行此类调试。

public void someMethod() {
    int a = 3;
    int b = 2;
    boolean shouldRun = true;
    if (shouldRun) {
        a = b + 2;
    }
    System.out.prinln(a);
}

然后,您将设置一个断点,在不停止执行的情况下更改shouldRun的值。它可以这样做。

enter image description here

请注意

  1. 未选中暂停
  2. 记录评估表达式用于在达到断点时更改变量

答案 1 :(得分:5)

只有在使用hotswapping或换句话说代码重新加载工具时才可以跳过行 - 在运行时添加代码更改/新代码。 Hotswapping是在不关闭系统的情况下更换组件的功能。 Hotswapping还可以指代改变程序运行代码而无需中断其执行的能力。

有各种hotswapping工具,如:JRebel(https://zeroturnaround.com/software/jrebel/)或HotSwapAgent(http://www.hotswapagent.org/

您可以避免重建整个应用程序以重新加载代码更改,这可以节省大量时间。只需使用IDE中内置的编译器,而不是运行完整的构建过程,hotSwap代理/工具会将代码重新加载到JVM中。

在这种情况下,它实际上不会跳过,但您可以只是注释/更改行并重新加载它。这个工具非常棒!!!!它大大加快了开发/调试过程

答案 2 :(得分:4)

调试时不能跳过“行执行”。您可以按F8跳过。

答案 3 :(得分:1)

Intellij最近发布了一篇博客文章,内容涉及一个名为Jump to Line的插件,即使Intellij本身没有此功能,该插件也可以实现此目的。令人惊讶的是,当Visual Studio已经使用了很多年时,Intellij仍然没有此功能!

https://blog.jetbrains.com/idea/2020/08/jump-to-any-line-while-debugging/

答案 4 :(得分:0)

无法跳过IntelliJ中的行的执行,甚至在Eclipse中也是如此。 你唯一能做的就是你可以跨步(F8) - 它将逐行跟踪 进入任何功能。

另一件事是Step out(Shift + F8) - 它将通过在该步骤中的行间执行直接进入下一个调试点。

答案 5 :(得分:0)

如ntotomanov所述,您可以使用HotSwap。 但是只是添加了我使用远程调试来调试我的基于Docker的应用,所以如果我要这种功能,我只是注释掉代码,然后转到Build-> Recompile class或Rebuild Project。然后Intellij发出Build&Attempting to HotSwap the code!如果您做了一些小事,例如注释掉代码,那么大多数情况下总是成功。调试愉快。

相关问题