microsoft / microsoft/java-debug
Breakpoint condition fails with ObjectCollectedException
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Java
- Sterne
- 409
- Forks
- 204
- Ø Merge
- 1 T. 13 Std.
- Gemergte PRs (30 T.)
- 4
Beschreibung
In a function with 2nd parameter being a String name a conditional breakpoint on the first statement with name.contains("xyz") results in
Breakpoint condition 'name.contains("xyz")' error: com.sun.jdi.ObjectCollectedException occurred invoking method.
The expression does work on the same line in Debug Console.
A BP with !name.isEmpty() does work.
.startsWith("xyz") also throws.
The Java LSP logs contain:
com.microsoft.java.debug.core.adapter.handler.SetBreakpointsRequestHandler handleEvaluationResult
SEVERE: [ConditionalBreakpoint]: com.sun.jdi.ObjectCollectedException occurred invoking method.
org.eclipse.debug.core.DebugException: com.sun.jdi.ObjectCollectedException occurred invoking method.
at org.eclipse.jdt.internal.debug.core.model.JDIDebugElement.throwDebugException(JDIDebugElement.java:263)
at org.eclipse.jdt.internal.debug.core.model.JDIDebugElement.requestFailed(JDIDebugElement.java:202)
at org.eclipse.jdt.internal.debug.core.model.JDIThread.invokeFailed(JDIThread.java:1257)
at org.eclipse.jdt.internal.debug.core.model.JDIThread.invokeFailed(JDIThread.java:1226)
at org.eclipse.jdt.internal.debug.core.model.JDIThread.invokeMethod(JDIThread.java:1026)
at org.eclipse.jdt.internal.debug.core.model.JDIObjectValue.sendMessage(JDIObjectValue.java:162)
at org.eclipse.jdt.internal.debug.eval.ast.instructions.SendMessage.execute(SendMessage.java:60)
at org.eclipse.jdt.internal.debug.eval.ast.engine.Interpreter.execute(Interpreter.java:69)
at org.eclipse.jdt.internal.debug.eval.ast.engine.ASTEvaluationEngine$EvalRunnable$1EvaluationRunnable.run(ASTEvaluationEngine.java:843)
at org.eclipse.jdt.internal.debug.core.model.JDIThread.runEvaluation(JDIThread.java:832)
at org.eclipse.jdt.internal.debug.eval.ast.engine.ASTEvaluationEngine$EvalRunnable.run(ASTEvaluationEngine.java:896)
at org.eclipse.jdt.internal.debug.core.model.JDIThread$ThreadJob.run(JDIThread.java:3490)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: com.sun.jdi.ObjectCollectedException
at org.eclipse.jdi.internal.MirrorImpl.defaultReplyErrorHandler(MirrorImpl.java:294)
at org.eclipse.jdi.internal.ObjectReferenceImpl.referenceType(ObjectReferenceImpl.java:530)
at org.eclipse.jdi.internal.ObjectReferenceImpl.type(ObjectReferenceImpl.java:547)
at org.eclipse.jdi.internal.ValueImpl.checkValue(ValueImpl.java:196)
at org.eclipse.jdi.internal.ValueImpl.checkValues(ValueImpl.java:172)
at org.eclipse.jdi.internal.ObjectReferenceImpl.invokeMethod(ObjectReferenceImpl.java:414)
at org.eclipse.jdt.internal.debug.core.model.JDIThread.invokeMethod(JDIThread.java:1009)
... 8 more
com.microsoft.java.debug.core.UsageDataSession recordResponse
WARNING: abnormal response
eclipse_adoptium-21-amd64-windows.2
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Reproduziere den bedingten Haltepunkt in ConvertModels.java rund um die verknüpfte Funktion und vergleiche ihn mit dem Verhalten der Debug Console. Beginne mit SetBreakpointsRequestHandler und dem in den Logs gezeigten JDI-Auswertungs-Stack, einschließlich JDIThread.invokeMethod. Als erledigt gilt, wenn String-Bedingungen wie contains und startsWith nicht mehr ObjectCollectedException melden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- java
- Bereich
- devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 38/100