diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinCoroutinesAsyncStackTraceProvider.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinCoroutinesAsyncStackTraceProvider.kt index a813fb9e6be..a52fa401a81 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinCoroutinesAsyncStackTraceProvider.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/KotlinCoroutinesAsyncStackTraceProvider.kt @@ -91,7 +91,7 @@ class KotlinCoroutinesAsyncStackTraceProvider : AsyncStackTraceProvider { return null } - val continuationVariable = frameProxy.visibleVariableByName("\$continuation") ?: return null + val continuationVariable = frameProxy.safeVisibleVariableByName("\$continuation") ?: return null val continuation = frameProxy.getValue(continuationVariable) as? ObjectReference ?: return null return collectFrames(continuation) diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/VariableFinder.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/VariableFinder.kt index 17ff4c2e455..ebbff964315 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/VariableFinder.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/VariableFinder.kt @@ -293,7 +293,7 @@ class VariableFinder private constructor(private val context: EvaluationContextI return null } - val continuationVariable = frameProxy.visibleVariableByName("\$continuation") ?: return null + val continuationVariable = frameProxy.safeVisibleVariableByName("\$continuation") ?: return null val continuation = frameProxy.getValue(continuationVariable) as? ObjectReference ?: return null return findCoroutineContextForContinuation(continuation) } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/safeUtil.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/safeUtil.kt index 4cf8ddd4cfb..7a3df74a305 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/safeUtil.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/safeUtil.kt @@ -15,6 +15,10 @@ fun StackFrameProxyImpl.safeVisibleVariables(): List { return wrapAbsentInformationException { visibleVariables() } ?: emptyList() } +fun StackFrameProxyImpl.safeVisibleVariableByName(name: String): LocalVariableProxyImpl? { + return wrapAbsentInformationException { visibleVariableByName(name) } +} + fun Method.safeAllLineLocations(): List { return DebuggerUtilsEx.allLineLocations(this) ?: emptyList() }