Java 为什么调试指针移动到源方法的第一行,而不是移动到当前存在调试指针的方法的第一行?
在什么情况下,Eclipse调试器会发生以下情况 第1类:Java 为什么调试指针移动到源方法的第一行,而不是移动到当前存在调试指针的方法的第一行?,java,Java,在什么情况下,Eclipse调试器会发生以下情况 第1类: public class Sample { public static void sourceMethod(BeanClass bean, Map<String, List<String>> hmMap){ try { System.out.println(); enterData(bean, hmMap); } catch
public class Sample {
public static void sourceMethod(BeanClass bean, Map<String, List<String>> hmMap){
try {
System.out.println();
enterData(bean, hmMap);
} catch (Exception e) {
e.getMessage();
}
}
public static void enterData(BeanClass bean, Map<String, List<String>> hmMap){
try {
System.out.println("hello");//Comment or Uncomment this line while debugging
System.out.println("Value : "+hmMap.get("KeyValue").get(0));
bean.setResult(true);
} catch (Exception e) {
e.printStackTrace();
bean.setResult(false);
}
}
public static void main(String args[]){
BeanClass bean = new BeanClass();
Map<String, List<String>> hmMap = new HashMap<String, List<String>>();
List<String> list = new ArrayList<String>();
list.add("hi");
list.add("hello");
hmMap.put("KeyValue", list);
Sample.sourceMethod(bean, hmMap);
}
}
预期场景:当在当前存在调试指针的方法中编辑并保存一段代码时,调试指针应移动到当前存在调试指针的方法的第一行
实际场景:当在调试指针当前存在的方法中编辑并保存一段代码时,调试指针将移动到源方法的第一行,而不是移动到调试指针当前存在的方法的第一行。在调试期间更改代码将使该方法无效从头开始重新执行,因为它必须重置该方法中的局部变量。 有关如何工作或如何正确使用调试选项的更多详细信息,请参阅下面的链接。。 如果您运行的是Java虚拟机(JVM)V1.4或更高版本,Eclipse 支持名为热插拔Bug修复(JVM中不可用)的功能 V1.3或更低版本)。它允许在测试过程中更改源代码 调试器会话,这比退出应用程序要好, 更改代码,重新编译,然后开始另一个调试 一场要使用此函数,只需在编辑器中更改代码 并恢复调试 还有一件事:在调试时,只需更改任何代码并保存它,eclipse就会自动将修改后的代码传输到目标VM。
请注意,您不能对代码进行结构更改,例如添加新方法、更改方法签名或添加新字段。但是您可以更改方法中的代码。在调试期间更改代码将使该方法从一开始就重新执行,因为它必须重置该方法中的局部变量。 有关如何工作或如何正确使用调试选项的更多详细信息,请参阅下面的链接。。 如果您运行的是Java虚拟机(JVM)V1.4或更高版本,Eclipse 支持名为热插拔Bug修复(JVM中不可用)的功能 V1.3或更低版本)。它允许在测试过程中更改源代码 调试器会话,这比退出应用程序要好, 更改代码,重新编译,然后开始另一个调试 一场要使用此函数,只需在编辑器中更改代码 并恢复调试 还有一件事:在调试时,只需更改任何代码并保存它,eclipse就会自动将修改后的代码传输到目标VM。
请注意,您不能对代码进行结构更改,例如添加新方法、更改方法签名或添加新字段。但是您可以在一个方法中更改代码。对我来说,Eclipse4可以正常工作。6@ChrisH编辑代码并使其简短!更新了上面的代码。@Zefick请尝试更新的代码!对我来说,Eclipse4可以像预期的那样工作。6@ChrisH编辑代码并使其简短!更新了上面的代码。@Zefick请尝试更新的代码!
public class BeanClass {
private boolean result = false;
public boolean getResult() {
return result;
}
public void setResult(boolean setResult) {
this.result = setResult;
}
}