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
This commit is contained in:
Vladimir Parfinenko
2026-08-11 17:56:16 +00:00
committed by intellij-monorepo-bot
parent 0959925dae
commit f55f5c8e0e
3 changed files with 31 additions and 4 deletions
@@ -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);
}
@@ -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);
}
}
@@ -72,7 +72,7 @@ public class RemoteConfiguration extends ModuleBasedConfiguration<JavaRunConfigu
debuggerSettings.setDebugPort(USE_SOCKET_TRANSPORT ? PORT : SHMEM_ADDRESS);
debuggerSettings.setTransport(USE_SOCKET_TRANSPORT ? DebuggerSettings.SOCKET_TRANSPORT : DebuggerSettings.SHMEM_TRANSPORT);
}
return new RemoteStateState(getProject(), createRemoteConnection(), AUTO_RESTART);
return new RemoteStateState(getProject(), createRemoteConnection(), this, AUTO_RESTART);
}
@Override