Debugger: Keep continuation and spilled variables until the whole trace is processed (EA-208000)
This commit is contained in:
+3
@@ -97,6 +97,7 @@ class KotlinCoroutinesAsyncStackTraceProvider : KotlinCoroutinesAsyncStackTraceP
|
|||||||
val frameProxy = context.frameProxy
|
val frameProxy = context.frameProxy
|
||||||
val continuationVariable = frameProxy.safeVisibleVariableByName(CONTINUATION_VARIABLE_NAME) ?: return null
|
val continuationVariable = frameProxy.safeVisibleVariableByName(CONTINUATION_VARIABLE_NAME) ?: return null
|
||||||
val continuation = frameProxy.getValue(continuationVariable) as? ObjectReference ?: return null
|
val continuation = frameProxy.getValue(continuationVariable) as? ObjectReference ?: return null
|
||||||
|
context.keepReference(continuation)
|
||||||
|
|
||||||
return collectFrames(continuation)
|
return collectFrames(continuation)
|
||||||
}
|
}
|
||||||
@@ -161,6 +162,8 @@ class KotlinCoroutinesAsyncStackTraceProvider : KotlinCoroutinesAsyncStackTraceP
|
|||||||
val rawSpilledVariables = context.invokeMethod(debugMetadataKtType, getSpilledVariableFieldMappingMethod, args) as? ArrayReference
|
val rawSpilledVariables = context.invokeMethod(debugMetadataKtType, getSpilledVariableFieldMappingMethod, args) as? ArrayReference
|
||||||
?: return null
|
?: return null
|
||||||
|
|
||||||
|
context.keepReference(rawSpilledVariables)
|
||||||
|
|
||||||
val length = rawSpilledVariables.length() / 2
|
val length = rawSpilledVariables.length() / 2
|
||||||
val spilledVariables = ArrayList<XNamedValue>(length)
|
val spilledVariables = ArrayList<XNamedValue>(length)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user