Skip to content

Commit 50f6ed8

Browse files
committed
Keep connection after detach, allowing lldb to re-connect later
1 parent c73ffba commit 50f6ed8

1 file changed

Lines changed: 19 additions & 10 deletions

File tree

src/main/java/be/ugent/topl/mio/GdbStub.java

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -95,21 +95,30 @@ public WOODDumpResponse getCurrentState() {
9595
}
9696

9797
public void start(int port) throws IOException {
98+
start(port, false);
99+
}
100+
101+
public void start(int port, boolean closeOnDetach) throws IOException {
98102
debugger.pause();
99103

100104
byte[] wasmData = Files.readAllBytes(Path.of(binaryLocation));
101105

102106
ServerSocket server = new ServerSocket(port);
103-
logger.info("Waiting for LLDB connection on port {}...", port);
104-
Socket sock = server.accept();
105-
logger.info("LLDB connected! {}", sock.getInetAddress());
106-
107-
InputStream in = sock.getInputStream();
108-
out = sock.getOutputStream();
107+
Socket sock;
108+
InputStream in = null;
109+
boolean attached = false;
109110

110-
boolean attached = true;
111+
do {
112+
if (!attached) {
113+
logger.info("Waiting for LLDB connection on port {}...", port);
114+
sock = server.accept();
115+
logger.info("LLDB connected! {}", sock.getInetAddress());
116+
117+
in = sock.getInputStream();
118+
out = sock.getOutputStream();
119+
attached = true;
120+
}
111121

112-
while (attached) {
113122
String pkt = recvPacket(in, out);
114123
if (pkt == null) {
115124
logger.info("Connection closed");
@@ -337,15 +346,15 @@ else if (pkt.startsWith("stackInfo")) {
337346
case "D":
338347
attached = false;
339348
logger.info("Detach from target");
340-
debugger.close();
341349
sendPacket(out, "OK");
342350
break;
343351
default:
344352
logger.warn("Unknown packet: {}", pkt);
345353
sendPacket(out, "");
346354
break;
347355
}
348-
}
356+
} while(!closeOnDetach || attached);
357+
debugger.close();
349358
}
350359

351360
private void stepBack(int n) throws IOException {

0 commit comments

Comments
 (0)