Java 什么可以使eclipse调试器将“while”内容跳过到内部开关的“default”中断?
在java项目中,我有以下代码:Java 什么可以使eclipse调试器将“while”内容跳过到内部开关的“default”中断?,java,eclipse,debugging,while-loop,switch-statement,Java,Eclipse,Debugging,While Loop,Switch Statement,在java项目中,我有以下代码: public static <return> method(<parameters>){ 1 <any method call> 2 while( <conditions> ){ 3 <any method call> 4 switch(<enum or integer>){ 5 case 0: 6 <any method cal
public static <return> method(<parameters>){
1 <any method call>
2 while( <conditions> ){
3 <any method call>
4 switch(<enum or integer>){
5 case 0:
6 <any method call>
7 break;
8 case 1:
9 <any method call>
10 break;
11 case 3:
12 <any method call>
13 break;
14 default:
15 <any method call>
16 break;
17 }
18 <any method call>
19 }
}
使用调试器时,第一次输入while时,它从2跳到16
我一直在尝试用精简的代码复制它,但没有成功,并试图找出是哪一部分导致了这种奇怪的行为,但直到现在,只发现了另一件奇怪的事情:
当我在1处声明一个伪变量并在18处修改它时,在3处不起作用,行为是在2之后输入第3行
编辑:
附
我认为我们需要看到这一部分的实际代码。我猜这不是eclipse所做的,而是javac所做的某种优化。您能编译代码并查看javap输出吗?在您提到的行中添加调试输出。例如,只需记录您在第2行。对所有管线执行此操作,并观察日志。我打赌你的代码通过的实际行不是调试器显示的行。奇怪的是,在进入while条件检查之前,跳转到“break”行,这只是第一次。记录每一行并没有提供新的线索。顺便说一句,我认为这对执行没有影响,但我想了解发生了什么,以防万一。