diff --git a/src/main/java/org/javacs/debug/JavaDebugServer.java b/src/main/java/org/javacs/debug/JavaDebugServer.java index 53d36ce68..b1aeda7fc 100644 --- a/src/main/java/org/javacs/debug/JavaDebugServer.java +++ b/src/main/java/org/javacs/debug/JavaDebugServer.java @@ -433,6 +433,16 @@ public void disconnect(DisconnectArguments req) { vm = null; } + @Override + public void pause(PauseArguments req) { + LOG.info("Suspending threads"); + vm.suspend(); + var evt = new StoppedEventBody(); + evt.reason = "suspended"; + evt.allThreadsStopped = true; + client.stopped(evt); + } + @Override public void terminate(TerminateArguments req) { vm.exit(1); diff --git a/src/main/java/org/javacs/debug/proto/DebugAdapter.java b/src/main/java/org/javacs/debug/proto/DebugAdapter.java index d434f213e..5b871eb7c 100644 --- a/src/main/java/org/javacs/debug/proto/DebugAdapter.java +++ b/src/main/java/org/javacs/debug/proto/DebugAdapter.java @@ -337,6 +337,12 @@ private void processRequest(JsonObject json) { ack(req); break; } + case "pause": + { + server.pause(gson.fromJson(json, PauseRequest.class).arguments); + ack(req); + break; + } case "terminate": { server.terminate(gson.fromJson(json, TerminateRequest.class).arguments); diff --git a/src/main/java/org/javacs/debug/proto/DebugServer.java b/src/main/java/org/javacs/debug/proto/DebugServer.java index ddc706d8c..6cce7511c 100644 --- a/src/main/java/org/javacs/debug/proto/DebugServer.java +++ b/src/main/java/org/javacs/debug/proto/DebugServer.java @@ -17,6 +17,8 @@ public interface DebugServer { void disconnect(DisconnectArguments req); + void pause(PauseArguments req); + void terminate(TerminateArguments req); void continue_(ContinueArguments req);