Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(98)

Side by Side Diff: runtime/observatory/lib/src/elements/debugger.dart

Issue 1965823002: Initial isolate reload support (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 debugger_page_element; 5 library debugger_page_element;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:html'; 8 import 'dart:html';
9 import 'dart:math'; 9 import 'dart:math';
10 import 'observatory_element.dart'; 10 import 'observatory_element.dart';
(...skipping 884 matching lines...) Expand 10 before | Expand all | Expand 10 after
895 String helpLong = 895 String helpLong =
896 'Show current frame.\n' 896 'Show current frame.\n'
897 '\n' 897 '\n'
898 'Syntax: info frame\n'; 898 'Syntax: info frame\n';
899 } 899 }
900 900
901 class IsolateCommand extends DebuggerCommand { 901 class IsolateCommand extends DebuggerCommand {
902 IsolateCommand(Debugger debugger) : super(debugger, 'isolate', [ 902 IsolateCommand(Debugger debugger) : super(debugger, 'isolate', [
903 new IsolateListCommand(debugger), 903 new IsolateListCommand(debugger),
904 new IsolateNameCommand(debugger), 904 new IsolateNameCommand(debugger),
905 new IsolateReloadCommand(debugger),
905 ]) { 906 ]) {
906 alias = 'i'; 907 alias = 'i';
907 } 908 }
908 909
909 Future run(List<String> args) { 910 Future run(List<String> args) {
910 if (args.length != 1) { 911 if (args.length != 1) {
911 debugger.console.print('isolate expects one argument'); 912 debugger.console.print('isolate expects one argument');
912 return new Future.value(null); 913 return new Future.value(null);
913 } 914 }
914 var arg = args[0].trim(); 915 var arg = args[0].trim();
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
955 result.add('$str '); 956 result.add('$str ');
956 } 957 }
957 } 958 }
958 for (var isolate in debugger.vm.isolates) { 959 for (var isolate in debugger.vm.isolates) {
959 if (isolate.name.startsWith(args[0])) { 960 if (isolate.name.startsWith(args[0])) {
960 result.add('${isolate.name} '); 961 result.add('${isolate.name} ');
961 } 962 }
962 } 963 }
963 return new Future.value(result); 964 return new Future.value(result);
964 } 965 }
965 String helpShort = 'Switch the current isolate'; 966 String helpShort = 'Switch, list, rename, or reload isolates';
966 967
967 String helpLong = 968 String helpLong =
968 'Switch, list, or rename isolates.\n' 969 'Switch the current isolate.\n'
969 '\n' 970 '\n'
970 'Syntax: isolate <number>\n' 971 'Syntax: isolate <number>\n'
971 ' isolate <name>\n'; 972 ' isolate <name>\n';
972 } 973 }
973 974
974 String _isolateRunState(Isolate isolate) { 975 String _isolateRunState(Isolate isolate) {
975 if (isolate.paused) { 976 if (isolate.paused) {
976 return 'paused'; 977 return 'paused';
977 } else if (isolate.running) { 978 } else if (isolate.running) {
978 return 'running'; 979 return 'running';
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1035 IsolateNameCommand(Debugger debugger) : super(debugger, 'name', []); 1036 IsolateNameCommand(Debugger debugger) : super(debugger, 'name', []);
1036 1037
1037 Future run(List<String> args) { 1038 Future run(List<String> args) {
1038 if (args.length != 1) { 1039 if (args.length != 1) {
1039 debugger.console.print('isolate name expects one argument'); 1040 debugger.console.print('isolate name expects one argument');
1040 return new Future.value(null); 1041 return new Future.value(null);
1041 } 1042 }
1042 return debugger.isolate.setName(args[0]); 1043 return debugger.isolate.setName(args[0]);
1043 } 1044 }
1044 1045
1045 String helpShort = 'Rename an isolate'; 1046 String helpShort = 'Rename the current isolate';
1046 1047
1047 String helpLong = 1048 String helpLong =
1048 'Rename an isolate.\n' 1049 'Rename the current isolate.\n'
1049 '\n' 1050 '\n'
1050 'Syntax: isolate name <name>\n'; 1051 'Syntax: isolate name <name>\n';
1051 } 1052 }
1052 1053
1054 class IsolateReloadCommand extends DebuggerCommand {
1055 IsolateReloadCommand(Debugger debugger) : super(debugger, 'reload', []);
1056
1057 Future run(List<String> args) async {
1058 if (debugger.isolate == null) {
1059 debugger.console.print('There is no current vm');
1060 return;
1061 }
1062
1063 await debugger.isolate.reloadSources();
1064
1065 debugger.console.print('Isolate reloading....');
1066 }
1067
1068 String helpShort = 'Reload the sources for the current isolate.';
1069
1070 String helpLong =
1071 'Reload the sources for the current isolate.\n'
1072 '\n'
1073 'Syntax: reload\n';
1074 }
1075
1053 class InfoCommand extends DebuggerCommand { 1076 class InfoCommand extends DebuggerCommand {
1054 InfoCommand(Debugger debugger) : super(debugger, 'info', [ 1077 InfoCommand(Debugger debugger) : super(debugger, 'info', [
1055 new InfoBreakpointsCommand(debugger), 1078 new InfoBreakpointsCommand(debugger),
1056 new InfoFrameCommand(debugger)]); 1079 new InfoFrameCommand(debugger)]);
1057 1080
1058 Future run(List<String> args) { 1081 Future run(List<String> args) {
1059 debugger.console.print("'info' expects a subcommand (see 'help info')"); 1082 debugger.console.print("'info' expects a subcommand (see 'help info')");
1060 return new Future.value(null); 1083 return new Future.value(null);
1061 } 1084 }
1062 1085
(...skipping 580 matching lines...) Expand 10 before | Expand all | Expand 10 after
1643 breakOnException = event.exceptions; 1666 breakOnException = event.exceptions;
1644 console.print("Now pausing for exceptions: $breakOnException"); 1667 console.print("Now pausing for exceptions: $breakOnException");
1645 } 1668 }
1646 break; 1669 break;
1647 1670
1648 case ServiceEvent.kIsolateUpdate: 1671 case ServiceEvent.kIsolateUpdate:
1649 var iso = event.owner; 1672 var iso = event.owner;
1650 console.print("Isolate ${iso.number} renamed to '${iso.name}'"); 1673 console.print("Isolate ${iso.number} renamed to '${iso.name}'");
1651 break; 1674 break;
1652 1675
1676 case ServiceEvent.kIsolateReload:
1677 var reloadError = event.reloadError;
1678 if (reloadError != null) {
1679 console.print('Isolate reload failed: ${event.reloadError}');
1680 } else {
1681 console.print('Isolate reloaded.');
1682 }
1683 break;
1684
1653 case ServiceEvent.kPauseStart: 1685 case ServiceEvent.kPauseStart:
1654 case ServiceEvent.kPauseExit: 1686 case ServiceEvent.kPauseExit:
1655 case ServiceEvent.kPauseBreakpoint: 1687 case ServiceEvent.kPauseBreakpoint:
1656 case ServiceEvent.kPauseInterrupted: 1688 case ServiceEvent.kPauseInterrupted:
1657 case ServiceEvent.kPauseException: 1689 case ServiceEvent.kPauseException:
1658 if (event.owner == isolate) { 1690 if (event.owner == isolate) {
1659 _refreshStack(event).then((_) async { 1691 _refreshStack(event).then((_) async {
1660 flushStdio(); 1692 flushStdio();
1661 if (isolate != null) { 1693 if (isolate != null) {
1662 await isolate.reload(); 1694 await isolate.reload();
(...skipping 1009 matching lines...) Expand 10 before | Expand all | Expand 10 after
2672 } 2704 }
2673 }); 2705 });
2674 } 2706 }
2675 2707
2676 void focus() { 2708 void focus() {
2677 $['textBox'].focus(); 2709 $['textBox'].focus();
2678 } 2710 }
2679 2711
2680 DebuggerInputElement.created() : super.created(); 2712 DebuggerInputElement.created() : super.created();
2681 } 2713 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698