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

Che*_*rry 28 java debugging intellij-idea

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

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

可以跳过执行"int a = b + 2;" 然后移民到"System.out.prinln(a);"?

PS我使用Intellij Idea 12.

And*_*and 29

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

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

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

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

在此输入图像描述

注意

  1. 未检查暂停
  2. Log evaluate表达式用于在命中断点时更改变量

  • 哇,这是一个令人难以置信的解决方案.这是一个很好的技巧,只需要跳过代码执行,也可以在生产代码上使用它. (4认同)

Kai*_*lyn 16

IntelliJ 最近发布了一篇关于名为Jump to Line的插件的博客文章,该插件可以实现此目的,尽管 IntelliJ 本身没有此功能。令人惊讶的是,Visual Studio 已经拥有此功能这么多年了,IntelliJ 仍然没有此功能!

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


nto*_*nov 5

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

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

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

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