Debugger: Unwrap EvaluateExceptions on checking (EA-105847)

This commit is contained in:
Yan Zhulanow
2019-07-23 21:19:52 +09:00
parent e301ddde9e
commit a664df8143
@@ -39,18 +39,25 @@ class KotlinCoroutinesAsyncStackTraceProvider : KotlinCoroutinesAsyncStackTraceP
override fun getAsyncStackTrace(stackFrame: JavaStackFrame, suspendContext: SuspendContextImpl): List<StackFrameItem>? {
return try {
getAsyncStackTraceSafe(stackFrame.stackFrameProxy, suspendContext)
} catch (e: ObjectCollectedException) {
null
} catch (e: IncompatibleThreadStateException) {
null
} catch (e: VMDisconnectedException) {
null
} catch (e: EvaluateException) {
LOG.debug("Cannot evaluate async stack trace", e)
} catch (e: Exception) {
handleException(e)
null
}
}
private fun handleException(e: Exception) {
when (if (e is EvaluateException) e.cause ?: e else e) {
is ObjectCollectedException, is IncompatibleThreadStateException, is VMDisconnectedException -> {}
else -> {
if (e is EvaluateException) {
LOG.debug("Cannot evaluate async stack trace", e)
} else {
throw e
}
}
}
}
fun getAsyncStackTraceSafe(frameProxy: StackFrameProxyImpl, suspendContext: SuspendContextImpl): List<StackFrameItem>? {
val location = frameProxy.location()
if (!location.isInKotlinSources()) {