| OLD | NEW | 
|---|
| 1 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file | 
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a | 
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. | 
| 4 | 4 | 
| 5 // Library used by debugger wire protocol tests (standalone VM debugging). | 5 // Library used by debugger wire protocol tests (standalone VM debugging). | 
| 6 | 6 | 
| 7 library DartDebugger; | 7 library DartDebugger; | 
| 8 | 8 | 
| 9 import "dart:async"; | 9 import "dart:async"; | 
| 10 import "dart:convert"; | 10 import "dart:convert"; | 
| (...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 386 | 386 | 
| 387   // Data collected from debug target. | 387   // Data collected from debug target. | 
| 388   Map currentMessage = null;  // Currently handled message sent by target. | 388   Map currentMessage = null;  // Currently handled message sent by target. | 
| 389   String scriptUrl = null; | 389   String scriptUrl = null; | 
| 390   bool shutdownEventSeen = false; | 390   bool shutdownEventSeen = false; | 
| 391   int isolateId = 0; | 391   int isolateId = 0; | 
| 392   bool isPaused = false; | 392   bool isPaused = false; | 
| 393 | 393 | 
| 394   Debugger(this.targetProcess, this.script) { | 394   Debugger(this.targetProcess, this.script) { | 
| 395     var stdoutStringStream = targetProcess.stdout | 395     var stdoutStringStream = targetProcess.stdout | 
| 396         .transform(new StringDecoder()) | 396         .transform(UTF8.decoder) | 
| 397         .transform(new LineSplitter()); | 397         .transform(new LineSplitter()); | 
| 398     stdoutStringStream.listen((line) { | 398     stdoutStringStream.listen((line) { | 
| 399       print("TARG: $line"); | 399       print("TARG: $line"); | 
| 400       if (line.startsWith("Debugger listening")) { | 400       if (line.startsWith("Debugger listening")) { | 
| 401         RegExp portExpr = new RegExp(r"\d+"); | 401         RegExp portExpr = new RegExp(r"\d+"); | 
| 402         var port = portExpr.stringMatch(line); | 402         var port = portExpr.stringMatch(line); | 
| 403         print("Debug target found listening at port '$port'"); | 403         print("Debug target found listening at port '$port'"); | 
| 404         openConnection(int.parse(port)); | 404         openConnection(int.parse(port)); | 
| 405       } | 405       } | 
| 406     }); | 406     }); | 
| 407 | 407 | 
| 408     var stderrStringStream = targetProcess.stderr | 408     var stderrStringStream = targetProcess.stderr | 
| 409         .transform(new StringDecoder()) | 409         .transform(UTF8.decoder) | 
| 410         .transform(new LineSplitter()); | 410         .transform(new LineSplitter()); | 
| 411     stderrStringStream.listen((line) { | 411     stderrStringStream.listen((line) { | 
| 412       print("TARG: $line"); | 412       print("TARG: $line"); | 
| 413     }); | 413     }); | 
| 414   } | 414   } | 
| 415 | 415 | 
| 416   // Handle debugger events, updating the debugger state. | 416   // Handle debugger events, updating the debugger state. | 
| 417   void handleEvent(Map<String,dynamic> msg) { | 417   void handleEvent(Map<String,dynamic> msg) { | 
| 418     events.add(new Event(msg)); | 418     events.add(new Event(msg)); | 
| 419 | 419 | 
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 535 | 535 | 
| 536   // Record error message. | 536   // Record error message. | 
| 537   void error(String s) { | 537   void error(String s) { | 
| 538     errors.add(s); | 538     errors.add(s); | 
| 539   } | 539   } | 
| 540 | 540 | 
| 541   void openConnection(int portNumber) { | 541   void openConnection(int portNumber) { | 
| 542     Socket.connect("127.0.0.1", portNumber).then((s) { | 542     Socket.connect("127.0.0.1", portNumber).then((s) { | 
| 543         s.setOption(SocketOption.TCP_NODELAY, true); | 543         s.setOption(SocketOption.TCP_NODELAY, true); | 
| 544         this.socket = s; | 544         this.socket = s; | 
| 545         var stringStream = socket.transform(new StringDecoder()); | 545         var stringStream = socket.transform(UTF8.decoder); | 
| 546         stringStream.listen((str) { | 546         stringStream.listen((str) { | 
| 547             try { | 547             try { | 
| 548               responses.append(str); | 548               responses.append(str); | 
| 549               handleMessages(); | 549               handleMessages(); | 
| 550             } catch(e, trace) { | 550             } catch(e, trace) { | 
| 551               print("Unexpected exception:\n$e\n$trace"); | 551               print("Unexpected exception:\n$e\n$trace"); | 
| 552               cleanup(); | 552               cleanup(); | 
| 553             } | 553             } | 
| 554           }, | 554           }, | 
| 555           onDone: () { | 555           onDone: () { | 
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 616   targetOpts.add("--debuggee"); | 616   targetOpts.add("--debuggee"); | 
| 617   print('args: ${targetOpts.join(" ")}'); | 617   print('args: ${targetOpts.join(" ")}'); | 
| 618 | 618 | 
| 619   Process.start(Platform.executable, targetOpts).then((Process process) { | 619   Process.start(Platform.executable, targetOpts).then((Process process) { | 
| 620     print("Debug target process started, pid ${process.pid}."); | 620     print("Debug target process started, pid ${process.pid}."); | 
| 621     process.stdin.close(); | 621     process.stdin.close(); | 
| 622     var debugger = new Debugger(process, new DebugScript(script)); | 622     var debugger = new Debugger(process, new DebugScript(script)); | 
| 623   }); | 623   }); | 
| 624   return true; | 624   return true; | 
| 625 } | 625 } | 
| OLD | NEW | 
|---|