diff --git a/idea/jvm-debugger/jvm-debugger-core/resources/messages/KotlinDebuggerCoreBundle.properties b/idea/jvm-debugger/jvm-debugger-core/resources/messages/KotlinDebuggerCoreBundle.properties index 1a0f18ea494..385dcff8d5d 100644 --- a/idea/jvm-debugger/jvm-debugger-core/resources/messages/KotlinDebuggerCoreBundle.properties +++ b/idea/jvm-debugger/jvm-debugger-core/resources/messages/KotlinDebuggerCoreBundle.properties @@ -14,6 +14,8 @@ line.and.lambda.breakpoint=Line and {0,choice,1#Lambda|2#Lambdas} Breakpoints filter.ignore.internal.classes=Do not step into Kotlin runtime library implementation classes variables.calculate.delegated.property.values=Calculate values of delegated properties (may affect program execution) +variables.disable.coroutine.agent.values=Disable coroutine agent +variables.disable.coroutine.agent.tooltip=Disables coroutine agent for Gradle and Java run configurations field.watchpoint.tab.title=Kotlin Field Watchpoints field.watchpoint.properties.access=Field &access diff --git a/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinDebuggerSettings.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinDebuggerSettings.kt index ff7c6c45034..6a7bb565bb7 100644 --- a/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinDebuggerSettings.kt +++ b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinDebuggerSettings.kt @@ -22,6 +22,7 @@ class KotlinDebuggerSettings : XDebuggerSettings("kotlin var DEBUG_RENDER_DELEGATED_PROPERTIES: Boolean = false var DEBUG_DISABLE_KOTLIN_INTERNAL_CLASSES: Boolean = true var DEBUG_IS_FILTER_FOR_STDLIB_ALREADY_ADDED: Boolean = false + var DEBUG_DISABLE_COROUTINE_AGENT: Boolean = false companion object { fun getInstance(): KotlinDebuggerSettings { diff --git a/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinDelegatedPropertyRendererConfigurableUi.form b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinDelegatedPropertyRendererConfigurableUi.form index c4995745f49..d4635ef5320 100644 --- a/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinDelegatedPropertyRendererConfigurableUi.form +++ b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinDelegatedPropertyRendererConfigurableUi.form @@ -1,6 +1,6 @@
- + @@ -17,9 +17,18 @@ + + + + + + + + + - + diff --git a/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinDelegatedPropertyRendererConfigurableUi.java b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinDelegatedPropertyRendererConfigurableUi.java index b0b631c203b..a51f3ec68b7 100644 --- a/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinDelegatedPropertyRendererConfigurableUi.java +++ b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/KotlinDelegatedPropertyRendererConfigurableUi.java @@ -24,22 +24,26 @@ import javax.swing.*; public class KotlinDelegatedPropertyRendererConfigurableUi implements ConfigurableUi { private JCheckBox renderDelegatedProperties; + private JCheckBox disableCoroutineAgent; private JPanel myPanel; @Override public void reset(@NotNull KotlinDebuggerSettings settings) { boolean flag = settings.getDEBUG_RENDER_DELEGATED_PROPERTIES(); renderDelegatedProperties.setSelected(flag); + disableCoroutineAgent.setSelected(settings.getDEBUG_DISABLE_COROUTINE_AGENT()); } @Override public boolean isModified(@NotNull KotlinDebuggerSettings settings) { - return settings.getDEBUG_RENDER_DELEGATED_PROPERTIES() != renderDelegatedProperties.isSelected(); + return settings.getDEBUG_RENDER_DELEGATED_PROPERTIES() != renderDelegatedProperties.isSelected() + || settings.getDEBUG_DISABLE_COROUTINE_AGENT() != disableCoroutineAgent.isSelected(); } @Override public void apply(@NotNull KotlinDebuggerSettings settings) { settings.setDEBUG_RENDER_DELEGATED_PROPERTIES(renderDelegatedProperties.isSelected()); + settings.setDEBUG_DISABLE_COROUTINE_AGENT(disableCoroutineAgent.isSelected()); } @NotNull diff --git a/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/DebuggerListener.kt b/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/DebuggerListener.kt index 4921929bf04..abb479b21c0 100644 --- a/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/DebuggerListener.kt +++ b/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/DebuggerListener.kt @@ -12,6 +12,7 @@ import com.intellij.execution.configurations.RunnerSettings import com.intellij.openapi.externalSystem.service.execution.ExternalSystemRunConfiguration import com.intellij.openapi.project.Project import com.intellij.xdebugger.XDebuggerManagerListener +import org.jetbrains.kotlin.idea.debugger.KotlinDebuggerSettings import org.jetbrains.kotlin.idea.debugger.coroutine.util.logger interface DebuggerListener : XDebuggerManagerListener { @@ -32,8 +33,8 @@ class CoroutineDebuggerListener(val project: Project) : DebuggerListener { ): DebuggerConnection? { val isExternalSystemRunConfiguration = configuration is ExternalSystemRunConfiguration val isGradleConfiguration = gradleConfiguration(configuration.type.id) - - if (runnerSettings is DebuggingRunnerData && !isExternalSystemRunConfiguration && !isGradleConfiguration) + val disableCoroutineAgent = KotlinDebuggerSettings.getInstance().DEBUG_DISABLE_COROUTINE_AGENT + if (!disableCoroutineAgent && runnerSettings is DebuggingRunnerData && !isExternalSystemRunConfiguration && !isGradleConfiguration) return DebuggerConnection(project, configuration, params, runnerSettings) return null }