(CoroutineDebugger) Alternative CoroutineInfoProvider added

Added way to retrieve coroutine information without an agent
in target JVM. 'kotlin.debugger.coroutines.switch' provides
two possibilities to test coroutines.
Agent way gets activated once kotlinx.coroutines.debug.DebugProbes
started with javaagent.
Library-less ways use DispatchedContinuation or ChildContinuationImpl
classes to retrieve coroutine information and stack traces.
This commit is contained in:
Vladimir Ilmov
2020-03-17 09:40:28 +01:00
parent ac6036f366
commit cd12226f20
48 changed files with 1902 additions and 1094 deletions
+14 -2
View File
@@ -189,10 +189,22 @@
description="Enable bytecode instrumentation for Kotlin classes"
defaultValue="false"
restartRequired="false"/>
<registryKey key="kotlin.debugger.coroutines"
description="Enable debugging for coroutines in Kotlin/JVM"
<registryKey key="kotlin.debugger.coroutines.standalone"
description="Enable debugging for coroutines in Kotlin/JVM with no library support"
defaultValue="false"
restartRequired="false"/>
<registryKey key="kotlin.debugger.coroutines.trace"
description="Trace coroutines debugger output"
defaultValue="false"
restartRequired="false"/>
<registryKey key="kotlin.debugger.coroutines.max"
description="Maximum amount of coroutines for debug"
defaultValue="1000"
restartRequired="false"/>
<registryKey key="kotlin.debugger.coroutines.switch"
description="Continuation information provider possible values are: DISPATCHED_CONTINUATION, CANCELLABLE_CONTINUATION."
defaultValue="DISPATCHED_CONTINUATION"
restartRequired="false"/>
</extensions>
<extensions defaultExtensionNs="org.jetbrains.uast">
@@ -380,6 +380,9 @@
<projectService serviceInterface="org.jetbrains.kotlin.idea.debugger.StackFrameInterceptor"
serviceImplementation="org.jetbrains.kotlin.idea.debugger.coroutine.CoroutineStackFrameInterceptor"/>
<projectService serviceInterface="org.jetbrains.kotlin.idea.debugger.coroutine.DebuggerListener"
serviceImplementation="org.jetbrains.kotlin.idea.debugger.coroutine.CoroutineDebuggerListener"/>
<errorHandler implementation="org.jetbrains.kotlin.idea.reporter.KotlinReportSubmitter"/>
<registryKey