provegard / ncdbg

A debugger for Nashorn that uses Chrome DevTools as frontend
BSD 3-Clause "New" or "Revised" License
31 stars 5 forks source link

Prevent object collection for known objects in paused mode #37

Closed provegard closed 7 years ago

provegard commented 7 years ago

To avoid:

com.sun.jdi.ObjectCollectedException: null
    at com.sun.tools.jdi.JDWPException.toJDIException(JDWPException.java:45)
    at com.sun.tools.jdi.ObjectReferenceImpl.referenceType(ObjectReferenceImpl.java:157)
    at com.sun.tools.jdi.ObjectReferenceImpl.validateAssignment(ObjectReferenceImpl.java:609)
    at com.sun.tools.jdi.ObjectReferenceImpl.prepareForAssignmentTo(ObjectReferenceImpl.java:581)
    at com.sun.tools.jdi.ValueImpl.prepareForAssignment(ValueImpl.java:48)
    at com.sun.tools.jdi.MethodImpl.validateAndPrepareArgumentsForInvoke(MethodImpl.java:382)
    at com.sun.tools.jdi.ObjectReferenceImpl.invokeMethod(ObjectReferenceImpl.java:407)
    at com.programmaticallyspeaking.ncd.nashorn.DynamicInvoker.$anonfun$applyDynamic$3(DynamicInvoker.scala:95)
    at com.programmaticallyspeaking.ncd.nashorn.Invoker.unpackError(DynamicInvoker.scala:53)
    at com.programmaticallyspeaking.ncd.nashorn.DynamicInvoker.$anonfun$applyDynamic$2(DynamicInvoker.scala:95)
    at com.programmaticallyspeaking.ncd.nashorn.VirtualMachineExtensions$ExtVirtualMachine.withoutClassPrepareRequests(VirtualMachineExtensions.scala:21)
    at com.programmaticallyspeaking.ncd.nashorn.DynamicInvoker.applyDynamic(DynamicInvoker.scala:95)
    at com.programmaticallyspeaking.ncd.nashorn.mirrors.JSObjectMirror.getMember(JSObjectMirror.scala:30)
    at com.programmaticallyspeaking.ncd.nashorn.mirrors.JSObjectMirror.$anonfun$properties$1(JSObjectMirror.scala:38)
    at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:234)
    at scala.collection.immutable.HashSet$HashSet1.foreach(HashSet.scala:320)
    at scala.collection.immutable.HashSet$HashTrieSet.foreach(HashSet.scala:976)
    at scala.collection.immutable.HashSet$HashTrieSet.foreach(HashSet.scala:976)
    at scala.collection.TraversableLike.map(TraversableLike.scala:234)
    at scala.collection.TraversableLike.map$(TraversableLike.scala:227)
    at scala.collection.AbstractSet.scala$collection$SetLike$$super$map(Set.scala:47)
    at scala.collection.SetLike.map(SetLike.scala:101)
    at scala.collection.SetLike.map$(SetLike.scala:101)
    at scala.collection.AbstractSet.map(Set.scala:47)
    at com.programmaticallyspeaking.ncd.nashorn.mirrors.JSObjectMirror.properties(JSObjectMirror.scala:36)
    at com.programmaticallyspeaking.ncd.nashorn.NashornDebuggerHost.$anonfun$getObjectProperties$2(NashornDebuggerHost.scala:1293)
    at scala.Option.map(Option.scala:146)
    at com.programmaticallyspeaking.ncd.nashorn.NashornDebuggerHost.$anonfun$getObjectProperties$1(NashornDebuggerHost.scala:1293)
    at scala.collection.mutable.HashMap.getOrElseUpdate(HashMap.scala:79)
    at com.programmaticallyspeaking.ncd.nashorn.NashornDebuggerHost.getObjectProperties(NashornDebuggerHost.scala:1293)
    at sun.reflect.GeneratedMethodAccessor37.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.programmaticallyspeaking.ncd.infra.ExecutorProxy$Handler.$anonfun$invoke$2(ExecutorProxy.scala:29)
    at scala.util.Try$.apply(Try.scala:209)
    at com.programmaticallyspeaking.ncd.infra.ExecutorProxy$Handler.$anonfun$invoke$1(ExecutorProxy.scala:29)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:748)
provegard commented 7 years ago
com.sun.jdi.ObjectCollectedException: null
    at com.sun.tools.jdi.JDWPException.toJDIException(JDWPException.java:45)
    at com.sun.tools.jdi.EventRequestManagerImpl$EventRequestImpl.set(EventRequestManagerImpl.java:204)
    at com.sun.tools.jdi.EventRequestManagerImpl$EventRequestImpl.setEnabled(EventRequestManagerImpl.java:166)
    at com.sun.tools.jdi.EventRequestManagerImpl$EventRequestImpl.enable(EventRequestManagerImpl.java:151)
    at com.programmaticallyspeaking.ncd.nashorn.BreakableLocation.enable(BreakableLocation.scala:45)
    at com.programmaticallyspeaking.ncd.nashorn.NashornDebuggerHost.enableBreakpointOnce(NashornDebuggerHost.scala:1007)
    at com.programmaticallyspeaking.ncd.nashorn.NashornDebuggerHost.$anonfun$expensiveStepInto$3(NashornDebuggerHost.scala:1017)
    at com.programmaticallyspeaking.ncd.nashorn.NashornDebuggerHost.$anonfun$expensiveStepInto$3$adapted(NashornDebuggerHost.scala:1017)
    at scala.collection.TraversableLike$WithFilter.$anonfun$foreach$1(TraversableLike.scala:789)
    at scala.collection.mutable.ResizableArray.foreach(ResizableArray.scala:59)
    at scala.collection.mutable.ResizableArray.foreach$(ResizableArray.scala:52)
    at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
    at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:788)
    at com.programmaticallyspeaking.ncd.nashorn.NashornDebuggerHost.expensiveStepInto(NashornDebuggerHost.scala:1017)
    at com.programmaticallyspeaking.ncd.nashorn.NashornDebuggerHost.step(NashornDebuggerHost.scala:1070)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.programmaticallyspeaking.ncd.infra.ExecutorProxy$Handler.$anonfun$invoke$2(ExecutorProxy.scala:29)
    at scala.util.Try$.apply(Try.scala:209)
    at com.programmaticallyspeaking.ncd.infra.ExecutorProxy$Handler.$anonfun$invoke$1(ExecutorProxy.scala:29)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:748)