@@ -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