rta*_*anu 12 java eclipse debugging breakpoints
if (true) {
String a = "foo";
String b = "bar";
}
Run Code Online (Sandbox Code Playgroud)
如果我在String a = "foo";eclipse中设置断点将停止,我可以跳过并查看a变量窗口内的值.但我不能跨越第二个声明,它只是离开代码块而我从未看到它的价值b.
这迫使我添加一个noop声明,String b = "bar";因此我可以看到b包含的内容.我也不能在收盘时添加一个断点},我认为这可能是相关的问题.
我知道Visual Studio允许这样做,所以在Eclipse中有没有办法做到这一点?
Ste*_*ell 16
在任意块的末尾设置断点是不可能的(没有字节码黑客攻击).
如果它是一个方法体,那么它是可能的:你可以设置一个方法断点.通过双击方法定义行来执行此操作:

(注意小箭头?)然后在断点视图中,选择断点以在显示的属性中查看a Entry和Exit选项复选框:

小箭头表示默认情况下,我们在方法的入口处设置了断点.
现在选择Exit(并取消选择Entry),您将在断点视图中看到:

(有一个不同的小箭头,表示退出断点.)
现在在这个小破坏程序('Debug As a Java Application')上运行调试器,它将在方法的退出括号上停止:

a现在可以在Variables视图中看到局部变量(仅在这种情况下)(使用正确的值):

值得注意的是,这种类型的断点陷阱方法会退出,但这种情况会发生 - 例如,如果我们通过抛出异常退出.
小智 -1
老实说,我不确定您的 Eclipse 安装中发生了什么。我正在使用 Java 工作,并且尝试了我能想到的一切。我在最后一行检查了断点的静态方法,}它工作得很好。我检查了同样的非静态方法。
它以这种方式分解:您不能在大括号末端断点,但它将默认为大括号下的任何内容(逐行)。所以如果你有一个嵌套函数:
public int DoesStuff(int x, int y) {
if(x > y) {
DoThing;
}
else {
DoOtherThing;
}
}
Run Code Online (Sandbox Code Playgroud)
那么最后两个大括号不能断点,但DoThing可以DoOtherThing。合理?
| 归档时间: |
|
| 查看次数: |
1942 次 |
| 最近记录: |