Skip to content

Commit beae9c5

Browse files
authored
fix setting exception breakpoints (microsoft#25)
* fix setting exception breakpoints * add detailed explanation in comments * call it at vm launching, avoid redundant executions
1 parent 2bdb32e commit beae9c5

File tree

1 file changed

+10
-2
lines changed
  • com.microsoft.java.debug.core/src/main/java/com/microsoft/java/debug/core

1 file changed

+10
-2
lines changed

com.microsoft.java.debug.core/src/main/java/com/microsoft/java/debug/core/DebugUtility.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.sun.jdi.Location;
2424
import com.sun.jdi.ThreadReference;
2525
import com.sun.jdi.VMDisconnectedException;
26+
import com.sun.jdi.VirtualMachine;
2627
import com.sun.jdi.VirtualMachineManager;
2728
import com.sun.jdi.connect.AttachingConnector;
2829
import com.sun.jdi.connect.Connector.Argument;
@@ -78,8 +79,15 @@ public static IDebugSession launch(VirtualMachineManager vmManager, String mainC
7879
} else {
7980
arguments.get("main").setValue(mainClass);
8081
}
81-
82-
return new DebugSession(connector.launch(arguments));
82+
VirtualMachine vm = connector.launch(arguments);
83+
// workaround for JDT bug.
84+
// vm.version() calls org.eclipse.jdi.internal.MirrorImpl#requestVM
85+
// It calls vm.getIDSizes() to read related sizes including ReferenceTypeIdSize,
86+
// which is required to construct requests with null ReferenceType (such as ExceptionRequest)
87+
// Without this line, it throws ObjectCollectedException in ExceptionRequest.enable().
88+
// See https://github.com/Microsoft/java-debug/issues/23
89+
vm.version();
90+
return new DebugSession(vm);
8391
}
8492

8593
/**

0 commit comments

Comments
 (0)