Chromium Code Reviews| Index: runtime/vm/service/vmservice.dart |
| diff --git a/runtime/vm/service/vmservice.dart b/runtime/vm/service/vmservice.dart |
| index 2a6bbc2879ac870eda2bee4e19bc7456426b069f..68ff7384460285898db6a3daf117fba16cc17f60 100644 |
| --- a/runtime/vm/service/vmservice.dart |
| +++ b/runtime/vm/service/vmservice.dart |
| @@ -142,12 +142,17 @@ class VMService extends MessageRouter { |
| message.setResponse(JSON.encode(result)); |
| } |
| + // TODO(johnmccutchan): Turn this into a command line tool that uses the |
| + // service library. |
| Future<String> _getCrashDump() async { |
| final perIsolateRequests = [ |
| // ?isolateId=<isolate id> will be appended to each of these requests. |
| - Uri.parse('getIsolate'), // Isolate information. |
| - Uri.parse('_getAllocationProfile'), // State of heap. |
| - Uri.parse('getStack?full=true'), // Call stack + local variables. |
| + // Isolate information. |
| + Uri.parse('getIsolate?_serviceIdZone=Ring.ExistingId'), |
| + // State of heap. |
| + Uri.parse('_getAllocationProfile?_serviceIdZone=Ring.ExistingId'), |
| + // Call stack + local variables. |
| + Uri.parse('getStack?_serviceIdZone=Ring.ExistingId&_full=true'), |
| ]; |
| // Snapshot of running isolates. |
| @@ -178,6 +183,14 @@ class VMService extends MessageRouter { |
| var response = JSON.decode(await isolate.route(message)); |
| responses[message.toUri().toString()] = response['result']; |
| } |
| + // Dump the object id ring requests. |
| + var message = |
| + new Message.forIsolate(Uri.parse('_dumpRingRequests'), isolate); |
|
turnidge
2015/05/11 19:48:45
We shouldn't leak the word "Ring" here.
Maybe _du
|
| + var response = JSON.decode(await isolate.route(message)); |
| + // Insert object id requests into responses map. |
| + response['result']['ringRequests'].forEach((k, v) { |
|
turnidge
2015/05/11 19:48:45
We shouldn't use the word "ring" here in "ringRequ
|
| + responses[k + '&isolateId=${isolate.serviceId}'] = v; |
| + }); |
| } |
| // Encode the entire crash dump. |