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

Unified Diff: runtime/observatory/lib/src/elements/debugger.dart

Issue 1395693003: Improve isolate list. Expose isolate origin. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | runtime/observatory/lib/src/service/object.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/observatory/lib/src/elements/debugger.dart
diff --git a/runtime/observatory/lib/src/elements/debugger.dart b/runtime/observatory/lib/src/elements/debugger.dart
index 10d5a677610cb84ab0c2ca2ae9832b99499e4ebd..28f75139b86b89015130e0aab4edc643a8531012 100644
--- a/runtime/observatory/lib/src/elements/debugger.dart
+++ b/runtime/observatory/lib/src/elements/debugger.dart
@@ -969,21 +969,59 @@ class IsolateCommand extends DebuggerCommand {
' isolate <name>\n';
}
+String _isolateRunState(Isolate isolate) {
+ if (isolate.paused) {
+ return 'paused';
+ } else if (isolate.running) {
+ return 'running';
+ } else if (isolate.idle) {
+ return 'idle';
+ } else {
+ return 'unknown';
+ }
+}
+
class IsolateListCommand extends DebuggerCommand {
IsolateListCommand(Debugger debugger) : super(debugger, 'list', []);
- Future run(List<String> args) {
+ Future run(List<String> args) async {
if (debugger.vm == null) {
debugger.console.print(
"Internal error: vm has not been set");
- return new Future.value(null);
+ return;
}
+
+ // Refresh all isolates first.
+ var pending = [];
for (var isolate in debugger.vm.isolates) {
- String current = (isolate == debugger.isolate ? ' *' : '');
+ pending.add(isolate.reload());
+ }
+ await Future.wait(pending);
+
+ const maxIdLen = 9;
+ const maxRunStateLen = 7;
+ var maxNameLen = 0;
+ for (var isolate in debugger.vm.isolates) {
+ if (isolate.name.length > maxNameLen) {
+ maxNameLen = isolate.name.length;
+ }
+ }
+
+ debugger.console.print("${'ID'.padLeft(maxIdLen, ' ')} "
+ "${'ORIGIN'.padLeft(maxIdLen, ' ')} "
+ "${'NAME'.padRight(maxNameLen, ' ')} "
+ "${'STATE'.padRight(maxRunStateLen, ' ')} "
+ "CURRENT");
+ for (var isolate in debugger.vm.isolates) {
+ String current = (isolate == debugger.isolate ? '*' : '');
debugger.console.print(
- "Isolate ${isolate.number} '${isolate.name}'${current}");
+ "${isolate.number.toString().padLeft(maxIdLen, ' ')} "
+ "${isolate.originNumber.toString().padLeft(maxIdLen, ' ')} "
+ "${isolate.name.padRight(maxNameLen, ' ')} "
+ "${_isolateRunState(isolate).padRight(maxRunStateLen, ' ')} "
+ "${current}");
}
- return new Future.value(null);
+ debugger.console.newline();
}
String helpShort = 'List all isolates';
« no previous file with comments | « no previous file | runtime/observatory/lib/src/service/object.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698