2013-07-04 59 views
18

假设我有java代码这样的(仅作为示例):Intellij想法如何跳过调试?

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.

+0

“'int a = b + 2;'”可以编译吗? – johnchen902

回答

22

调试器不能执行部分代码。

但是,可以执行额外的代码并更改变量的值,所以如果您需要在调试过程中排除一行而不执行,则必须更改代码以为此类调试做准备。

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

哇,这是一个令人难以置信的解决方案。不得不跳过代码执行的一个很好的诀窍,也将其用于生产代码。 –

+0

您还可以添加热键或路径来调用此窗口吗?这是不是cleare你有这个 –

+0

它四处移动。在2016.2.5中,我使用了ctrl + f8,然后按Ctrl + Shift + f8两次以进入该对话框。 –

3

您不能在调试时跳过'行执行'。您可以按F8键跳过。

0

不可能跳过IntelliJ中甚至Eclipse中执行的行。 只有你可以做的事情是你可以跨越(F8) - 它将一行一行地追踪没有 进入任何功能。

还有一件事是退出(Shift + F8) - 它将直接通过在这一行中的两行之间执行直接进入下一个调试点。

+1

否。“恢复程序”(F9)将一直持续到下一个断点。 Step Out将运行当前方法,并在方法存在时停止调试器。 –

3

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

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

,您就不必重建整个应用程序重新加载代码的变化,这是一个巨大的节省时间。不用运行完整的构建过程,只需使用内置于IDE中的编译器,而hotSwap代理/工具就会将代码重新加载到JVM中。

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