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