(CoroutineDebugger) 201 compatibility fix
#KT-39143 fixed
This commit is contained in:
-6
@@ -5,13 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.debugger.test
|
||||
|
||||
import com.intellij.debugger.engine.JavaStackFrame
|
||||
import com.intellij.debugger.engine.SuspendContextImpl
|
||||
import com.intellij.execution.process.ProcessOutputTypes
|
||||
import com.intellij.xdebugger.frame.XStackFrame
|
||||
import org.jetbrains.kotlin.idea.debugger.coroutine.PreflightProvider
|
||||
import org.jetbrains.kotlin.idea.debugger.test.preference.DebuggerPreferences
|
||||
import org.jetbrains.kotlin.idea.debugger.test.util.XDebuggerTestUtil
|
||||
|
||||
abstract class AbstractXCoroutinesStackTraceTest : KotlinDescriptorTestCaseWithStackFrames() {
|
||||
override fun doMultiFileTest(files: TestFiles, preferences: DebuggerPreferences) {
|
||||
|
||||
+5
@@ -33,6 +33,11 @@ public class ContinuationStackTraceTestGenerated extends AbstractContinuationSta
|
||||
runTest("idea/jvm-debugger/jvm-debugger-test/testData/continuation/suspendFun.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("suspendFunWithInner.kt")
|
||||
public void testSuspendFunWithInner() throws Exception {
|
||||
runTest("idea/jvm-debugger/jvm-debugger-test/testData/continuation/suspendFunWithInner.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("suspendLambda.kt")
|
||||
public void testSuspendLambda() throws Exception {
|
||||
runTest("idea/jvm-debugger/jvm-debugger-test/testData/continuation/suspendLambda.kt");
|
||||
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.debugger.test
|
||||
|
||||
import org.junit.runner.RunWith
|
||||
import org.junit.runners.Suite
|
||||
|
||||
@Suite.SuiteClasses(
|
||||
ContinuationStackTraceTestGenerated::class,
|
||||
XCoroutinesStackTraceTestGenerated::class
|
||||
)
|
||||
@RunWith(Suite::class)
|
||||
class CoroutineDebuggerTestSuite
|
||||
+22
-25
@@ -19,10 +19,11 @@ import com.intellij.openapi.roots.ui.configuration.libraryEditor.NewLibraryEdito
|
||||
import com.intellij.testFramework.EdtTestUtil
|
||||
import com.intellij.xdebugger.frame.XNamedValue
|
||||
import com.intellij.xdebugger.frame.XStackFrame
|
||||
import com.intellij.xdebugger.impl.frame.XDebuggerFramesList
|
||||
import org.jetbrains.idea.maven.aether.ArtifactKind
|
||||
import org.jetbrains.jps.model.library.JpsMavenRepositoryLibraryDescriptor
|
||||
import org.jetbrains.kotlin.idea.debugger.coroutine.CoroutineAsyncStackTraceProvider
|
||||
import org.jetbrains.kotlin.idea.debugger.coroutine.PreflightProvider
|
||||
import org.jetbrains.kotlin.idea.debugger.coroutine.data.CoroutinePreflightFrame
|
||||
import org.jetbrains.kotlin.idea.debugger.coroutine.data.CreationCoroutineStackFrameItem
|
||||
import org.jetbrains.kotlin.idea.debugger.invokeInSuspendManagerThread
|
||||
import org.jetbrains.kotlin.idea.debugger.test.preference.DebuggerPreferences
|
||||
@@ -44,7 +45,7 @@ abstract class KotlinDescriptorTestCaseWithStackFrames() : KotlinDescriptorTestC
|
||||
val classPath = mutableListOf<String>()
|
||||
|
||||
protected fun out(frame: XStackFrame) {
|
||||
out(INDENT_FRAME, XDebuggerTestUtil.getFramePresentation(frame))
|
||||
out(INDENT_FRAME, frame.javaClass.simpleName + " FRAME:" + XDebuggerTestUtil.getFramePresentation(frame))
|
||||
outVariables(frame)
|
||||
}
|
||||
|
||||
@@ -84,32 +85,28 @@ abstract class KotlinDescriptorTestCaseWithStackFrames() : KotlinDescriptorTestC
|
||||
out("Thread stack trace:")
|
||||
val stackFrames: List<XStackFrame> = XDebuggerTestUtil.collectFrames(executionStack)
|
||||
val suspendContextImpl = suspendContext as SuspendContextImpl
|
||||
suspendContextImpl.runActionInSuspendCommand {
|
||||
for (frame in stackFrames) {
|
||||
if (frame is JavaStackFrame) {
|
||||
out(frame)
|
||||
val stackFrames = suspendContext.invokeInSuspendManagerThread(debugProcess) {
|
||||
asyncStackTraceProvider?.getAsyncStackTrace(frame, suspendContextImpl)
|
||||
}
|
||||
if (stackFrames != null) {
|
||||
if (stackFrames is PreflightProvider) {
|
||||
val preflightFrame = stackFrames.getPreflight()
|
||||
out(0, preflightFrame.coroutineInfoData.key.toString())
|
||||
}
|
||||
for (frameItem in stackFrames) {
|
||||
if (frameItem is CreationCoroutineStackFrameItem && frameItem.first)
|
||||
out(0, "Creation stack frame")
|
||||
|
||||
val frame: XStackFrame? = suspendContext.invokeInSuspendManagerThread(debugProcess) {
|
||||
frameItem.createFrame(debugProcess)
|
||||
}
|
||||
frame?.let {
|
||||
out(frame)
|
||||
}
|
||||
for (frame in stackFrames) {
|
||||
if (frame is JavaStackFrame) {
|
||||
out(frame)
|
||||
if (frame is CoroutinePreflightFrame) {
|
||||
val key = frame.coroutineInfoData.key
|
||||
out(0, "CoroutineInfo: ${key.id} ${key.name} ${key.state}")
|
||||
}
|
||||
val stackFrames = suspendContext.invokeInSuspendManagerThread(debugProcess) {
|
||||
asyncStackTraceProvider?.getAsyncStackTrace(frame, suspendContextImpl)
|
||||
}
|
||||
if (stackFrames != null) {
|
||||
for (frameItem in stackFrames) {
|
||||
val frame: XStackFrame? =
|
||||
frameItem.createFrame(debugProcess)
|
||||
if (frame is XDebuggerFramesList.ItemWithSeparatorAbove && frame.hasSeparatorAbove())
|
||||
out(0, frame.captionAboveOf)
|
||||
|
||||
frame?.let {
|
||||
out(frame)
|
||||
}
|
||||
return@runActionInSuspendCommand
|
||||
}
|
||||
return@doWhenXSessionPausedThenResume
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -31,7 +31,7 @@ import com.intellij.xdebugger.impl.ui.XDebuggerUIConstants
|
||||
import com.intellij.xdebugger.impl.ui.tree.XDebuggerTree
|
||||
import com.intellij.xdebugger.impl.ui.tree.nodes.*
|
||||
import org.jetbrains.kotlin.idea.debugger.KotlinFrameExtraVariablesProvider
|
||||
import org.jetbrains.kotlin.idea.debugger.coroutine.data.ContinuationValueDescriptorImpl
|
||||
import org.jetbrains.kotlin.idea.debugger.coroutine.data.ContinuationVariableValueDescriptorImpl
|
||||
import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinCodeFragmentFactory
|
||||
import org.jetbrains.kotlin.idea.debugger.invokeInManagerThread
|
||||
import org.jetbrains.kotlin.idea.debugger.test.KOTLIN_LIBRARY_NAME
|
||||
@@ -275,7 +275,7 @@ private class Printer(private val delegate: FramePrinterDelegate, private val co
|
||||
is ThisDescriptorImpl -> "this"
|
||||
is FieldDescriptor -> "field"
|
||||
is ArrayElementDescriptor -> "element"
|
||||
is ContinuationValueDescriptorImpl -> "cont"
|
||||
is ContinuationVariableValueDescriptorImpl -> "cont"
|
||||
is MessageDescriptor -> ""
|
||||
else -> "unknown"
|
||||
}
|
||||
|
||||
+4
-3
@@ -109,9 +109,10 @@ internal class KotlinOutputChecker(
|
||||
val disconnectedIndex = lines.indexOfFirst { it.startsWith(DISCONNECT_PREFIX) }
|
||||
lines[disconnectedIndex] = DISCONNECT_PREFIX
|
||||
|
||||
return lines.filter {
|
||||
!(it.matches(JDI_BUG_OUTPUT_PATTERN_1) || it.matches(JDI_BUG_OUTPUT_PATTERN_2))
|
||||
}.joinToString("\n")
|
||||
return lines
|
||||
.map { it.replace("FRAME:(.*):\\d+".toRegex(), "$1:!LINE_NUMBER!") }
|
||||
.filter { !(it.matches(JDI_BUG_OUTPUT_PATTERN_1) || it.matches(JDI_BUG_OUTPUT_PATTERN_2)) }
|
||||
.joinToString("\n")
|
||||
}
|
||||
|
||||
private fun buildOutputString(): String {
|
||||
|
||||
@@ -3,22 +3,22 @@ Run Java
|
||||
Connected to the target VM
|
||||
suspendFun.kt:28
|
||||
Thread stack trace:
|
||||
b:28, SuspendFunKt (coroutine1)
|
||||
KotlinStackFrame b:!LINE_NUMBER!, SuspendFunKt (coroutine1)
|
||||
($completion, b, bParam)
|
||||
a:21, SuspendFunKt (coroutine1)
|
||||
CoroutinePreflightFrame a:!LINE_NUMBER!, SuspendFunKt (coroutine1)
|
||||
($completion, $continuation, $result, a, aParam)
|
||||
CoroutineNameIdState(name=coroutine, id=-1, state=UNKNOWN, dispatcher=null)
|
||||
test1:15, SuspendFunKt (coroutine1)
|
||||
(i, test1)
|
||||
invoke:9, SuspendFunKt$main$result$1 (coroutine1)
|
||||
CoroutineInfo: -1 coroutine UNKNOWN
|
||||
CoroutineStackFrame test1:!LINE_NUMBER!, SuspendFunKt (coroutine1)
|
||||
($completion, $continuation, $result, i, test1)
|
||||
CoroutineStackFrame invoke:!LINE_NUMBER!, SuspendFunKt$main$result$1 (coroutine1)
|
||||
(continuation, p1, this)
|
||||
invokeSuspend:121, IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$$inlined$createCoroutineFromSuspendFunction$IntrinsicsKt__IntrinsicsJvmKt$3 (kotlin.coroutines.intrinsics)
|
||||
CoroutineStackFrame invokeSuspend:!LINE_NUMBER!, IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$$inlined$createCoroutineFromSuspendFunction$IntrinsicsKt__IntrinsicsJvmKt$3 (kotlin.coroutines.intrinsics)
|
||||
($i$a$-createCoroutineFromSuspendFunction-IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$2, it, result, this)
|
||||
resumeWith:33, BaseContinuationImpl (kotlin.coroutines.jvm.internal)
|
||||
CoroutineStackFrame resumeWith:!LINE_NUMBER!, BaseContinuationImpl (kotlin.coroutines.jvm.internal)
|
||||
($i$a$-with-BaseContinuationImpl$resumeWith$1, $this$with, completion, current, param, result, this)
|
||||
startCoroutine:128, ContinuationKt (kotlin.coroutines)
|
||||
CoroutineStackFrame startCoroutine:!LINE_NUMBER!, ContinuationKt (kotlin.coroutines)
|
||||
($this$startCoroutine, completion, receiver)
|
||||
main:9, SuspendFunKt (coroutine1)
|
||||
CoroutineStackFrame main:!LINE_NUMBER!, SuspendFunKt (coroutine1)
|
||||
(cnt)
|
||||
Disconnected from the target VM
|
||||
|
||||
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
package continuation
|
||||
// ATTACH_LIBRARY: maven(org.jetbrains.kotlinx:kotlinx-coroutines-debug:1.3.5)-javaagent
|
||||
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.coroutines.yield
|
||||
|
||||
fun main() {
|
||||
val mainTestVal = ""
|
||||
runBlocking {
|
||||
val rootCoroutineVal = mainTestVal
|
||||
TestSuspendA().a()
|
||||
print("")
|
||||
}
|
||||
}
|
||||
|
||||
class TestSuspendA {
|
||||
val classField = ""
|
||||
suspend fun a() {
|
||||
val methodVal = ""
|
||||
InClassB().b()
|
||||
print("")
|
||||
}
|
||||
|
||||
class InClassB {
|
||||
val inClassBField = ""
|
||||
|
||||
suspend fun b() {
|
||||
val inClassBMethodVal = ""
|
||||
InClassC().c()
|
||||
print("")
|
||||
}
|
||||
|
||||
inner class InClassC {
|
||||
val inClassCField = inClassBField
|
||||
|
||||
suspend fun c() {
|
||||
yield()
|
||||
val inClassCMethodVal = ""
|
||||
//Breakpoint!
|
||||
print("")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
LineBreakpoint created at suspendFunWithInner.kt:40
|
||||
Run Java
|
||||
Connected to the target VM
|
||||
suspendFunWithInner.kt:40
|
||||
Thread stack trace:
|
||||
CoroutinePreflightFrame c:!LINE_NUMBER!, TestSuspendA$InClassB$InClassC (continuation)
|
||||
($completion, $continuation, $result, inClassCMethodVal, this)
|
||||
CoroutineInfo: 1 coroutine RUNNING
|
||||
CoroutineStackFrame b:!LINE_NUMBER!, TestSuspendA$InClassB (continuation)
|
||||
(inClassBMethodVal, this)
|
||||
CoroutineStackFrame a:!LINE_NUMBER!, TestSuspendA (continuation)
|
||||
(methodVal, this)
|
||||
CoroutineStackFrame invokeSuspend:!LINE_NUMBER!, SuspendFunWithInnerKt$main$1 (continuation)
|
||||
($this$runBlocking, rootCoroutineVal)
|
||||
CoroutineStackFrame resumeWith:!LINE_NUMBER!, BaseContinuationImpl (kotlin.coroutines.jvm.internal)
|
||||
($i$a$-with-BaseContinuationImpl$resumeWith$1, $this$with, completion, current, param, result, this)
|
||||
CoroutineStackFrame run:!LINE_NUMBER!, DispatchedTask (kotlinx.coroutines)
|
||||
($i$a$-withCoroutineContext-DispatchedTask$run$1, $i$f$withCoroutineContext, context, continuation, countOrElement$iv, delegate, exception, fatalException, job, oldValue$iv, state, taskContext, this)
|
||||
CoroutineStackFrame processNextEvent:!LINE_NUMBER!, EventLoopImplBase (kotlinx.coroutines)
|
||||
(delayed, this)
|
||||
CoroutineStackFrame joinBlocking:!LINE_NUMBER!, BlockingCoroutine (kotlinx.coroutines)
|
||||
(this)
|
||||
CoroutineStackFrame runBlocking:!LINE_NUMBER!, BuildersKt__BuildersKt (kotlinx.coroutines)
|
||||
(block, context, contextInterceptor, coroutine, currentThread, eventLoop, newContext)
|
||||
CoroutineStackFrame runBlocking:!LINE_NUMBER!, BuildersKt (kotlinx.coroutines)
|
||||
(block, context)
|
||||
CoroutineStackFrame runBlocking$default:!LINE_NUMBER!, BuildersKt__BuildersKt (kotlinx.coroutines)
|
||||
()
|
||||
CoroutineStackFrame runBlocking$default:!LINE_NUMBER!, BuildersKt (kotlinx.coroutines)
|
||||
()
|
||||
CoroutineStackFrame main:!LINE_NUMBER!, SuspendFunWithInnerKt (continuation)
|
||||
(mainTestVal)
|
||||
Coroutine creation stack trace
|
||||
CreationCoroutineStackFrame createCoroutineUnintercepted:!LINE_NUMBER!, IntrinsicsKt__IntrinsicsJvmKt (kotlin.coroutines.intrinsics)
|
||||
()
|
||||
CreationCoroutineStackFrame startCoroutineCancellable:!LINE_NUMBER!, CancellableKt (kotlinx.coroutines.intrinsics)
|
||||
()
|
||||
CreationCoroutineStackFrame runBlocking$default:!LINE_NUMBER!, BuildersKt (kotlinx.coroutines)
|
||||
()
|
||||
CreationCoroutineStackFrame main:!LINE_NUMBER!, SuspendFunWithInnerKt (continuation)
|
||||
()
|
||||
CreationCoroutineStackFrame FRAME:main:-1, SuspendFunWithInnerKt (continuation)
|
||||
()
|
||||
Disconnected from the target VM
|
||||
|
||||
Process finished with exit code 0
|
||||
+10
-10
@@ -3,24 +3,24 @@ Run Java
|
||||
Connected to the target VM
|
||||
suspendLambda.kt:12
|
||||
Thread stack trace:
|
||||
nextSequence:12, SuspendLambdaKt (continuation)
|
||||
KotlinStackFrame nextSequence:!LINE_NUMBER!, SuspendLambdaKt (continuation)
|
||||
(terms, terms1)
|
||||
invokeSuspend:23, SuspendLambdaKt$fibonacci$1 (continuation)
|
||||
CoroutinePreflightFrame invokeSuspend:!LINE_NUMBER!, SuspendLambdaKt$fibonacci$1 (continuation)
|
||||
($result, $this$sequence, step, terms, this)
|
||||
CoroutineNameIdState(name=coroutine, id=-1, state=UNKNOWN, dispatcher=null)
|
||||
resumeWith:33, kotlin.coroutines.jvm.internal.BaseContinuationImpl
|
||||
CoroutineInfo: -1 coroutine UNKNOWN
|
||||
CoroutineStackFrame resumeWith:!LINE_NUMBER!, BaseContinuationImpl (kotlin.coroutines.jvm.internal)
|
||||
($i$a$-with-BaseContinuationImpl$resumeWith$1, $this$with, completion, current, param, result, this)
|
||||
hasNext:140, kotlin.sequences.SequenceBuilderIterator
|
||||
CoroutineStackFrame hasNext:!LINE_NUMBER!, SequenceBuilderIterator (kotlin.sequences)
|
||||
(step, this)
|
||||
hasNext:406, kotlin.sequences.TakeSequence$iterator$1
|
||||
CoroutineStackFrame hasNext:!LINE_NUMBER!, TakeSequence$iterator$1 (kotlin.sequences)
|
||||
(this)
|
||||
toCollection:722, kotlin.sequences.SequencesKt___SequencesKt
|
||||
CoroutineStackFrame toCollection:!LINE_NUMBER!, SequencesKt___SequencesKt (kotlin.sequences)
|
||||
($this$toCollection, destination)
|
||||
toMutableList:752, kotlin.sequences.SequencesKt___SequencesKt
|
||||
CoroutineStackFrame toMutableList:!LINE_NUMBER!, SequencesKt___SequencesKt (kotlin.sequences)
|
||||
($this$toMutableList)
|
||||
toList:743, kotlin.sequences.SequencesKt___SequencesKt
|
||||
CoroutineStackFrame toList:!LINE_NUMBER!, SequencesKt___SequencesKt (kotlin.sequences)
|
||||
($this$toList)
|
||||
main:5, continuation.SuspendLambdaKt
|
||||
CoroutineStackFrame main:!LINE_NUMBER!, SuspendLambdaKt (continuation)
|
||||
(a)
|
||||
Disconnected from the target VM
|
||||
|
||||
|
||||
+21
-21
@@ -3,43 +3,43 @@ Run Java
|
||||
Connected to the target VM
|
||||
coroutineSuspendFun.kt:29
|
||||
Thread stack trace:
|
||||
c:29, CoroutineSuspendFunKt (continuation)
|
||||
KotlinStackFrame c:!LINE_NUMBER!, CoroutineSuspendFunKt (continuation)
|
||||
($completion, c, paramB)
|
||||
b:23, CoroutineSuspendFunKt (continuation)
|
||||
CoroutinePreflightFrame b:!LINE_NUMBER!, CoroutineSuspendFunKt (continuation)
|
||||
($completion, $continuation, $result, b, paramA)
|
||||
CoroutineNameIdState(name=coroutine, id=1, state=RUNNING, dispatcher=BlockingEventLoop@6f45df59)
|
||||
a:16, CoroutineSuspendFunKt (continuation)
|
||||
CoroutineInfo: 1 coroutine RUNNING
|
||||
CoroutineStackFrame a:!LINE_NUMBER!, CoroutineSuspendFunKt (continuation)
|
||||
(a)
|
||||
invokeSuspend:10, CoroutineSuspendFunKt$main$1 (continuation)
|
||||
CoroutineStackFrame invokeSuspend:!LINE_NUMBER!, CoroutineSuspendFunKt$main$1 (continuation)
|
||||
($this$runBlocking)
|
||||
resumeWith:33, BaseContinuationImpl (kotlin.coroutines.jvm.internal)
|
||||
CoroutineStackFrame resumeWith:!LINE_NUMBER!, BaseContinuationImpl (kotlin.coroutines.jvm.internal)
|
||||
($i$a$-with-BaseContinuationImpl$resumeWith$1, $this$with, completion, current, param, result, this)
|
||||
run:56, DispatchedTask (kotlinx.coroutines)
|
||||
CoroutineStackFrame run:!LINE_NUMBER!, DispatchedTask (kotlinx.coroutines)
|
||||
($i$a$-withCoroutineContext-DispatchedTask$run$1, $i$f$withCoroutineContext, context, continuation, countOrElement$iv, delegate, exception, fatalException, job, oldValue$iv, state, taskContext, this)
|
||||
processNextEvent:272, EventLoopImplBase (kotlinx.coroutines)
|
||||
CoroutineStackFrame processNextEvent:!LINE_NUMBER!, EventLoopImplBase (kotlinx.coroutines)
|
||||
(delayed, this)
|
||||
joinBlocking:79, BlockingCoroutine (kotlinx.coroutines)
|
||||
CoroutineStackFrame joinBlocking:!LINE_NUMBER!, BlockingCoroutine (kotlinx.coroutines)
|
||||
(this)
|
||||
runBlocking:54, BuildersKt__BuildersKt (kotlinx.coroutines)
|
||||
CoroutineStackFrame runBlocking:!LINE_NUMBER!, BuildersKt__BuildersKt (kotlinx.coroutines)
|
||||
(block, context, contextInterceptor, coroutine, currentThread, eventLoop, newContext)
|
||||
runBlocking:1, BuildersKt (kotlinx.coroutines)
|
||||
CoroutineStackFrame runBlocking:!LINE_NUMBER!, BuildersKt (kotlinx.coroutines)
|
||||
(block, context)
|
||||
CoroutineStackFrame runBlocking$default:!LINE_NUMBER!, BuildersKt__BuildersKt (kotlinx.coroutines)
|
||||
()
|
||||
runBlocking$default:36, BuildersKt__BuildersKt (kotlinx.coroutines)
|
||||
CoroutineStackFrame runBlocking$default:!LINE_NUMBER!, BuildersKt (kotlinx.coroutines)
|
||||
()
|
||||
runBlocking$default:1, BuildersKt (kotlinx.coroutines)
|
||||
()
|
||||
main:9, CoroutineSuspendFunKt (continuation)
|
||||
CoroutineStackFrame main:!LINE_NUMBER!, CoroutineSuspendFunKt (continuation)
|
||||
(main)
|
||||
Creation stack frame
|
||||
createCoroutineUnintercepted:116, IntrinsicsKt__IntrinsicsJvmKt (kotlin.coroutines.intrinsics)
|
||||
Coroutine creation stack trace
|
||||
CreationCoroutineStackFrame createCoroutineUnintercepted:!LINE_NUMBER!, IntrinsicsKt__IntrinsicsJvmKt (kotlin.coroutines.intrinsics)
|
||||
()
|
||||
startCoroutineCancellable:26, CancellableKt (kotlinx.coroutines.intrinsics)
|
||||
CreationCoroutineStackFrame startCoroutineCancellable:!LINE_NUMBER!, CancellableKt (kotlinx.coroutines.intrinsics)
|
||||
()
|
||||
runBlocking$default:1, BuildersKt (kotlinx.coroutines)
|
||||
CreationCoroutineStackFrame runBlocking$default:!LINE_NUMBER!, BuildersKt (kotlinx.coroutines)
|
||||
()
|
||||
main:9, CoroutineSuspendFunKt (continuation)
|
||||
CreationCoroutineStackFrame main:!LINE_NUMBER!, CoroutineSuspendFunKt (continuation)
|
||||
()
|
||||
main:-1, CoroutineSuspendFunKt (continuation)
|
||||
CreationCoroutineStackFrame FRAME:main:-1, CoroutineSuspendFunKt (continuation)
|
||||
()
|
||||
Disconnected from the target VM
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
package continuation
|
||||
// ATTACH_LIBRARY: maven(org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.5-SNAPSHOT)-javaagent
|
||||
// ATTACH_LIBRARY: maven(org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.6)-javaagent
|
||||
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.coroutines.yield
|
||||
|
||||
+21
-21
@@ -3,43 +3,43 @@ Run Java
|
||||
Connected to the target VM
|
||||
coroutineSuspendFun136.kt:29
|
||||
Thread stack trace:
|
||||
c:29, CoroutineSuspendFun136Kt (continuation)
|
||||
KotlinStackFrame c:!LINE_NUMBER!, CoroutineSuspendFun136Kt (continuation)
|
||||
($completion, c, paramB)
|
||||
b:23, CoroutineSuspendFun136Kt (continuation)
|
||||
CoroutinePreflightFrame b:!LINE_NUMBER!, CoroutineSuspendFun136Kt (continuation)
|
||||
($completion, $continuation, $result, b, paramA)
|
||||
CoroutineNameIdState(name=coroutine, id=1, state=RUNNING, dispatcher=BlockingEventLoop@305fd85d)
|
||||
a:16, CoroutineSuspendFun136Kt (continuation)
|
||||
CoroutineInfo: 1 coroutine RUNNING
|
||||
CoroutineStackFrame a:!LINE_NUMBER!, CoroutineSuspendFun136Kt (continuation)
|
||||
(a)
|
||||
invokeSuspend:10, CoroutineSuspendFun136Kt$main$1 (continuation)
|
||||
CoroutineStackFrame invokeSuspend:!LINE_NUMBER!, CoroutineSuspendFun136Kt$main$1 (continuation)
|
||||
($this$runBlocking)
|
||||
resumeWith:33, BaseContinuationImpl (kotlin.coroutines.jvm.internal)
|
||||
CoroutineStackFrame resumeWith:!LINE_NUMBER!, BaseContinuationImpl (kotlin.coroutines.jvm.internal)
|
||||
($i$a$-with-BaseContinuationImpl$resumeWith$1, $this$with, completion, current, param, result, this)
|
||||
run:56, DispatchedTask (kotlinx.coroutines)
|
||||
CoroutineStackFrame run:!LINE_NUMBER!, DispatchedTask (kotlinx.coroutines)
|
||||
($i$a$-withCoroutineContext-DispatchedTask$run$1, $i$f$withCoroutineContext, context, continuation, countOrElement$iv, delegate, exception, fatalException, job, oldValue$iv, state, taskContext, this)
|
||||
processNextEvent:274, EventLoopImplBase (kotlinx.coroutines)
|
||||
CoroutineStackFrame processNextEvent:!LINE_NUMBER!, EventLoopImplBase (kotlinx.coroutines)
|
||||
(delayed, task, this)
|
||||
joinBlocking:79, BlockingCoroutine (kotlinx.coroutines)
|
||||
CoroutineStackFrame joinBlocking:!LINE_NUMBER!, BlockingCoroutine (kotlinx.coroutines)
|
||||
(this)
|
||||
runBlocking:54, BuildersKt__BuildersKt (kotlinx.coroutines)
|
||||
CoroutineStackFrame runBlocking:!LINE_NUMBER!, BuildersKt__BuildersKt (kotlinx.coroutines)
|
||||
(block, context, contextInterceptor, coroutine, currentThread, eventLoop, newContext)
|
||||
runBlocking:1, BuildersKt (kotlinx.coroutines)
|
||||
CoroutineStackFrame runBlocking:!LINE_NUMBER!, BuildersKt (kotlinx.coroutines)
|
||||
(block, context)
|
||||
CoroutineStackFrame runBlocking$default:!LINE_NUMBER!, BuildersKt__BuildersKt (kotlinx.coroutines)
|
||||
()
|
||||
runBlocking$default:36, BuildersKt__BuildersKt (kotlinx.coroutines)
|
||||
CoroutineStackFrame runBlocking$default:!LINE_NUMBER!, BuildersKt (kotlinx.coroutines)
|
||||
()
|
||||
runBlocking$default:1, BuildersKt (kotlinx.coroutines)
|
||||
()
|
||||
main:9, CoroutineSuspendFun136Kt (continuation)
|
||||
CoroutineStackFrame main:!LINE_NUMBER!, CoroutineSuspendFun136Kt (continuation)
|
||||
(main)
|
||||
Creation stack frame
|
||||
createCoroutineUnintercepted:116, IntrinsicsKt__IntrinsicsJvmKt (kotlin.coroutines.intrinsics)
|
||||
Coroutine creation stack trace
|
||||
CreationCoroutineStackFrame createCoroutineUnintercepted:!LINE_NUMBER!, IntrinsicsKt__IntrinsicsJvmKt (kotlin.coroutines.intrinsics)
|
||||
()
|
||||
startCoroutineCancellable:26, CancellableKt (kotlinx.coroutines.intrinsics)
|
||||
CreationCoroutineStackFrame startCoroutineCancellable:!LINE_NUMBER!, CancellableKt (kotlinx.coroutines.intrinsics)
|
||||
()
|
||||
runBlocking$default:1, BuildersKt (kotlinx.coroutines)
|
||||
CreationCoroutineStackFrame runBlocking$default:!LINE_NUMBER!, BuildersKt (kotlinx.coroutines)
|
||||
()
|
||||
main:9, CoroutineSuspendFun136Kt (continuation)
|
||||
CreationCoroutineStackFrame main:!LINE_NUMBER!, CoroutineSuspendFun136Kt (continuation)
|
||||
()
|
||||
main:-1, CoroutineSuspendFun136Kt (continuation)
|
||||
CreationCoroutineStackFrame FRAME:main:-1, CoroutineSuspendFun136Kt (continuation)
|
||||
()
|
||||
Disconnected from the target VM
|
||||
|
||||
|
||||
@@ -3,22 +3,22 @@ Run Java
|
||||
Connected to the target VM
|
||||
suspendMain.kt:15
|
||||
Thread stack trace:
|
||||
invokeSuspend:15, SuspendMainKt$main$2 (continuation)
|
||||
CoroutinePreflightFrame invokeSuspend:!LINE_NUMBER!, SuspendMainKt$main$2 (continuation)
|
||||
($result, $this$coroutineScope, this)
|
||||
CoroutineNameIdState(name=coroutine, id=-1, state=UNKNOWN, dispatcher=null)
|
||||
startUndispatchedOrReturn:91, UndispatchedKt (kotlinx.coroutines.intrinsics)
|
||||
CoroutineInfo: -1 coroutine UNKNOWN
|
||||
CoroutineStackFrame startUndispatchedOrReturn:!LINE_NUMBER!, UndispatchedKt (kotlinx.coroutines.intrinsics)
|
||||
($i$a$-undispatchedResult-UndispatchedKt$startUndispatchedOrReturn$2, $i$f$undispatchedResult, $this$startUndispatchedOrReturn, $this$undispatchedResult$iv, block, receiver)
|
||||
coroutineScope:177, CoroutineScopeKt (kotlinx.coroutines)
|
||||
CoroutineStackFrame coroutineScope:!LINE_NUMBER!, CoroutineScopeKt (kotlinx.coroutines)
|
||||
($completion, $i$a$-suspendCoroutineUninterceptedOrReturn-CoroutineScopeKt$coroutineScope$2, block, coroutine, uCont)
|
||||
main:9, SuspendMainKt (continuation)
|
||||
CoroutineStackFrame main:!LINE_NUMBER!, SuspendMainKt (continuation)
|
||||
($completion)
|
||||
invokeSuspend:86, IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$$inlined$createCoroutineFromSuspendFunction$IntrinsicsKt__IntrinsicsJvmKt$1 (kotlin.coroutines.intrinsics)
|
||||
CoroutineStackFrame invokeSuspend:!LINE_NUMBER!, IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$$inlined$createCoroutineFromSuspendFunction$IntrinsicsKt__IntrinsicsJvmKt$1 (kotlin.coroutines.intrinsics)
|
||||
($i$a$-createCoroutineFromSuspendFunction-IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$1, it, result, this)
|
||||
resumeWith:33, BaseContinuationImpl (kotlin.coroutines.jvm.internal)
|
||||
CoroutineStackFrame resumeWith:!LINE_NUMBER!, BaseContinuationImpl (kotlin.coroutines.jvm.internal)
|
||||
($i$a$-with-BaseContinuationImpl$resumeWith$1, $this$with, completion, current, param, result, this)
|
||||
startCoroutine:114, ContinuationKt (kotlin.coroutines)
|
||||
CoroutineStackFrame startCoroutine:!LINE_NUMBER!, ContinuationKt (kotlin.coroutines)
|
||||
($this$startCoroutine, completion)
|
||||
runSuspend:19, RunSuspendKt (kotlin.coroutines.jvm.internal)
|
||||
CoroutineStackFrame runSuspend:!LINE_NUMBER!, RunSuspendKt (kotlin.coroutines.jvm.internal)
|
||||
(block, run)
|
||||
Disconnected from the target VM
|
||||
|
||||
|
||||
Reference in New Issue
Block a user