假设我有这样的 java 代码(仅作为示例):
public void someMethod(){
int a = 3;
int b = 2; // <-- stay debug here
a = b + 2;
System.out.prinln(a);
}
可以跳过行的执行a = b + 2;
并立即转到System.out.prinln(a);
?
PS我使用Intellij Idea 12。
假设我有这样的 java 代码(仅作为示例):
public void someMethod(){
int a = 3;
int b = 2; // <-- stay debug here
a = b + 2;
System.out.prinln(a);
}
可以跳过行的执行a = b + 2;
并立即转到System.out.prinln(a);
?
PS我使用Intellij Idea 12。
调试器不可能不执行部分代码。
但是,可以执行额外的代码并更改变量的值,因此如果您需要在调试期间从执行中排除一行,则必须更改代码以准备这种调试。
public void someMethod() {
int a = 3;
int b = 2;
boolean shouldRun = true;
if (shouldRun) {
a = b + 2;
}
System.out.prinln(a);
}
然后,您将设置一个断点,在不停止执行的情况下更改 shouldRun 的值。可以这样做。
注意
仅当您使用热交换,或者换句话说,代码重新加载工具 - 在运行时添加代码更改/新代码时,才有可能跳过行。热插拔是在不关闭系统的情况下更换组件的功能。热交换也可以指改变程序运行代码而不需要中断其执行的能力。
有各种热交换工具,例如:JRebel ( https://zeroturnaround.com/software/jrebel/ ) 或 HotSwapAgent ( http://www.hotswapagent.org/ )
您避免必须重新构建整个应用程序以重新加载代码更改,这是一个巨大的时间节省。无需运行完整的构建过程,只需使用 IDE 中内置的编译器,hotSwap 代理/工具会将代码重新加载到 JVM 中。
在这种情况下,它实际上不会跳过,但您可以评论/更改行并重新加载它。这个工具太棒了!!!!它极大地加快了开发/调试过程。
IntelliJ 最近发布了一篇关于名为Jump to Line的插件的博客文章,尽管 IntelliJ 本身没有此功能。令人惊讶的是,当 Visual Studio 拥有这么多年时,IntelliJ 仍然没有此功能!
https://blog.jetbrains.com/idea/2020/08/jump-to-any-line-while-debugging/
调试时不能只跳过“行执行”。您可以按 F8 跳过。
如 ntotomanov 所述,您可以使用 HotSwap。但只是添加了我使用远程调试来调试基于 Docker 的应用程序,所以如果我想要这种功能,我只需注释掉代码,然后转到 Build -> Recompile class 或 Rebuild Project 。然后 Intellij 发出 Build & Attempting to HotSwap 代码!如果你做了一些小事,比如注释掉代码,它大多数时候总是成功的。愉快的调试。
在 IntelliJ 甚至 Eclipse 中都不能跳过行的 EXECUTION。您唯一能做的就是您可以跳过 (F8) - 这将逐行跟踪,而无需进入任何函数。
另一件事是 Step out(Shift+F8) - 它将通过在该单个步骤的行之间执行直接进入下一个调试点。