From f55f5c8e0e41364f0f7e8af8e5d913ddb73c3b5b Mon Sep 17 00:00:00 2001 From: Vladimir Parfinenko Date: Wed, 22 Jul 2026 16:26:10 +0200 Subject: [PATCH] IDEA-391886, debugger: Navigation back to logpoints when using Attach to Process or Remote JVM Debug configuration ^IDEA-391886 fixed (cherry picked from commit 1baf240afac985db37eed382e37690996f47903d) IJ-CR-214873 GitOrigin-RevId: f786a3270896c7e62bcbad075aa5fae1606bf550 --- .../debugger/engine/RemoteStateState.java | 31 +++++++++++++++++-- .../attach/JavaAttachDebuggerProvider.java | 2 +- .../execution/remote/RemoteConfiguration.java | 2 +- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/RemoteStateState.java b/java/debugger/impl/src/com/intellij/debugger/engine/RemoteStateState.java index 54e85df555f5..a3634bb4aaf9 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/RemoteStateState.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/RemoteStateState.java @@ -5,27 +5,51 @@ import com.intellij.execution.DefaultExecutionResult; import com.intellij.execution.ExecutionException; import com.intellij.execution.ExecutionResult; import com.intellij.execution.Executor; +import com.intellij.execution.application.JavaConsoleDecorator; import com.intellij.execution.configurations.RemoteConnection; import com.intellij.execution.configurations.RemoteState; +import com.intellij.execution.configurations.RunConfigurationBase; import com.intellij.execution.impl.ConsoleViewImpl; import com.intellij.execution.runners.ProgramRunner; +import com.intellij.execution.ui.ConsoleView; import com.intellij.openapi.project.Project; import com.intellij.xdebugger.DapMode; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class RemoteStateState implements RemoteState { private final Project myProject; private final RemoteConnection myConnection; private final boolean myAutoRestart; + private final @Nullable RunConfigurationBase myRunConfiguration; public RemoteStateState(Project project, RemoteConnection connection) { - this(project, connection, false); + this(project, connection, false, null); } public RemoteStateState(Project project, RemoteConnection connection, boolean autoRestart) { + this(project, connection, autoRestart, null); + } + + public RemoteStateState(Project project, RemoteConnection connection, @NotNull RunConfigurationBase runConfiguration) { + this(project, connection, false, runConfiguration); + } + + public RemoteStateState(Project project, + RemoteConnection connection, + @NotNull RunConfigurationBase runConfiguration, + boolean autoRestart) { + this(project, connection, autoRestart, runConfiguration); + } + + private RemoteStateState(Project project, + RemoteConnection connection, + boolean autoRestart, + @Nullable RunConfigurationBase runConfiguration) { myProject = project; myConnection = connection; myAutoRestart = autoRestart; + myRunConfiguration = runConfiguration; } @Override @@ -34,7 +58,10 @@ public class RemoteStateState implements RemoteState { if (DapMode.isDap()) { return new DefaultExecutionResult(null, process); } - ConsoleViewImpl consoleView = new ConsoleViewImpl(myProject, false); + ConsoleView consoleView = new ConsoleViewImpl(myProject, false); + if (myRunConfiguration != null) { + consoleView = JavaConsoleDecorator.decorate(consoleView, myRunConfiguration, executor); + } consoleView.attachToProcess(process); return new DefaultExecutionResult(consoleView, process); } diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/attach/JavaAttachDebuggerProvider.java b/java/debugger/impl/src/com/intellij/debugger/impl/attach/JavaAttachDebuggerProvider.java index c1f7b0e73789..00b1268a6a72 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/attach/JavaAttachDebuggerProvider.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/attach/JavaAttachDebuggerProvider.java @@ -512,7 +512,7 @@ public class JavaAttachDebuggerProvider implements XAttachDebuggerProvider { @Override public @Nullable RunProfileState getState(@NotNull Executor executor, @NotNull ExecutionEnvironment environment) throws ExecutionException { - return new RemoteStateState(getProject(), myAttachInfo.createConnection()); + return new RemoteStateState(getProject(), myAttachInfo.createConnection(), this); } } diff --git a/java/execution/impl/src/com/intellij/execution/remote/RemoteConfiguration.java b/java/execution/impl/src/com/intellij/execution/remote/RemoteConfiguration.java index 6a2f8327ea47..a53ac7b77f92 100644 --- a/java/execution/impl/src/com/intellij/execution/remote/RemoteConfiguration.java +++ b/java/execution/impl/src/com/intellij/execution/remote/RemoteConfiguration.java @@ -72,7 +72,7 @@ public class RemoteConfiguration extends ModuleBasedConfiguration