| 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:io"; | 9 import "dart:io"; |
| 10 import "dart:utf"; | 10 import "dart:utf"; |
| 11 import "dart:json" as JSON; | 11 import "dart:json" as JSON; |
| 12 | 12 |
| 13 // TODO(hausner): need to select a different port number for each | |
| 14 // test that runs in parallel. | |
| 15 var debugPort = 5860; | |
| 16 | |
| 17 // Whether or not to print debug target process on the console. | 13 // Whether or not to print debug target process on the console. |
| 18 var showDebuggeeOutput = true; | 14 var showDebuggeeOutput = true; |
| 19 | 15 |
| 20 // Whether or not to print the debugger wire messages on the console. | 16 // Whether or not to print the debugger wire messages on the console. |
| 21 var verboseWire = false; | 17 var verboseWire = false; |
| 22 | 18 |
| 23 // Class to buffer wire protocol data from debug target and | 19 // Class to buffer wire protocol data from debug target and |
| 24 // break it down to individual json messages. | 20 // break it down to individual json messages. |
| 25 class JsonBuffer { | 21 class JsonBuffer { |
| 26 String buffer = null; | 22 String buffer = null; |
| (...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 491 void close({killDebugee: false}) { | 487 void close({killDebugee: false}) { |
| 492 if (errorsDetected) { | 488 if (errorsDetected) { |
| 493 for (int i = 0; i < errors.length; i++) print(errors[i]); | 489 for (int i = 0; i < errors.length; i++) print(errors[i]); |
| 494 } | 490 } |
| 495 socket.close(); | 491 socket.close(); |
| 496 if (killDebugee) { | 492 if (killDebugee) { |
| 497 targetProcess.kill(); | 493 targetProcess.kill(); |
| 498 print("Target process killed"); | 494 print("Target process killed"); |
| 499 } | 495 } |
| 500 Expect.isTrue(!errorsDetected); | 496 Expect.isTrue(!errorsDetected); |
| 501 stdin.close(); | 497 exit(errors.length); |
| 502 stdout.close(); | |
| 503 stderr.close(); | |
| 504 } | 498 } |
| 505 } | 499 } |
| 506 | 500 |
| 507 | 501 |
| 508 bool RunScript(List script) { | 502 bool RunScript(List script, int debugPort) { |
| 509 var options = new Options(); | 503 var options = new Options(); |
| 510 if (options.arguments.contains("--debuggee")) { | 504 if (options.arguments.contains("--debuggee")) { |
| 511 return false; | 505 return false; |
| 512 } | 506 } |
| 513 // The default is to show debugging output. | 507 // The default is to show debugging output. |
| 514 showDebuggeeOutput = !options.arguments.contains("--non-verbose"); | 508 showDebuggeeOutput = !options.arguments.contains("--non-verbose"); |
| 515 verboseWire = options.arguments.contains("--wire"); | 509 verboseWire = options.arguments.contains("--wire"); |
| 516 | 510 |
| 517 var targetOpts = [ "--debug:$debugPort" ]; | 511 var targetOpts = [ "--debug:$debugPort" ]; |
| 518 if (showDebuggeeOutput) targetOpts.add("--verbose_debug"); | 512 if (showDebuggeeOutput) targetOpts.add("--verbose_debug"); |
| 519 targetOpts.add(options.script); | 513 targetOpts.add(options.script); |
| 520 targetOpts.add("--debuggee"); | 514 targetOpts.add("--debuggee"); |
| 521 | 515 |
| 522 Process.start(options.executable, targetOpts).then((Process process) { | 516 Process.start(options.executable, targetOpts).then((Process process) { |
| 523 print("Debug target process started"); | 517 print("Debug target process started"); |
| 524 process.stdin.close(); | 518 process.stdin.close(); |
| 525 process.exitCode.then((int exitCode) { | 519 process.exitCode.then((int exitCode) { |
| 526 Expect.equals(0, exitCode); | 520 Expect.equals(0, exitCode); |
| 527 print("Debug target process exited with exit code $exitCode"); | 521 print("Debug target process exited with exit code $exitCode"); |
| 528 }); | 522 }); |
| 529 var debugger = new Debugger(process, debugPort); | 523 var debugger = new Debugger(process, debugPort); |
| 530 debugger.runScript(script); | 524 debugger.runScript(script); |
| 531 }); | 525 }); |
| 532 return true; | 526 return true; |
| 533 } | 527 } |
| OLD | NEW |