From d9d260a048ef2105e801d18ffbca87c108b0a187 Mon Sep 17 00:00:00 2001 From: Alexey Merkulov Date: Thu, 28 Mar 2024 00:57:06 +0100 Subject: [PATCH] [debugger] Add possibility to run debugger suspend helper thread by the debugger agent It will help to stop the debugger in the "full" state when the evaluation is available in all stopped threads. Also, may be used for good Pause button. It can be enabled with debugger.run.suspend.helper registry GitOrigin-RevId: 95a444e3892fba99b10bdc8678557bd1d00bd69b --- .../intellij.java.debugger.agent.holder.iml | 10 +++++----- .../debugger/impl/RemoteConnectionBuilder.java | 4 ++++ platform/util/resources/misc/registry.properties | 3 +++ 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/java/debugger/debugger-agent/intellij.java.debugger.agent.holder.iml b/java/debugger/debugger-agent/intellij.java.debugger.agent.holder.iml index bb95d6619212..364daf27ab2e 100644 --- a/java/debugger/debugger-agent/intellij.java.debugger.agent.holder.iml +++ b/java/debugger/debugger-agent/intellij.java.debugger.agent.holder.iml @@ -7,19 +7,19 @@ - + - - b724610d5798f5dad9c86d7fd3771ce155a0601b6153741e75c4d86fab100d84 + + 29a31d2122fb753a7b5e94dcb90a44b84e36f543ac89b1b4f58d345107ffb957 - + - + diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/RemoteConnectionBuilder.java b/java/debugger/impl/src/com/intellij/debugger/impl/RemoteConnectionBuilder.java index d2556b8d47f5..fac985b082eb 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/RemoteConnectionBuilder.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/RemoteConnectionBuilder.java @@ -23,6 +23,7 @@ import com.intellij.openapi.projectRoots.JavaSdkVersion; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.projectRoots.ex.JavaSdkUtil; import com.intellij.openapi.util.io.FileUtil; +import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.PathUtil; import com.intellij.util.PathsList; @@ -247,6 +248,9 @@ public class RemoteConnectionBuilder { private static String generateAgentSettings(@Nullable Project project) { Properties properties = CaptureSettingsProvider.getPointsProperties(project); + if (Registry.is("debugger.run.suspend.helper")) { + properties.setProperty("suspendHelper", "true"); + } if (!properties.isEmpty()) { try { File file = FileUtil.createTempFile("capture", ".props"); diff --git a/platform/util/resources/misc/registry.properties b/platform/util/resources/misc/registry.properties index ec1ae49cf3ff..1b2505723899 100644 --- a/platform/util/resources/misc/registry.properties +++ b/platform/util/resources/misc/registry.properties @@ -1140,6 +1140,9 @@ show.method.base.class.in.java.file.structure=true debugger.enable.breakpoints.during.evaluation=false +debugger.run.suspend.helper=false +debugger.run.suspend.helper.description=Run suspend helper by debug agent + debugger.filter.breakpoints.during.stepping.using.debugger.engine=false debugger.filter.breakpoints.during.stepping.using.debugger.engine.description=When enabled uses old mechanism to disable all events in other threads during stepping via applying JDI thread filter