OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 // Simple interactive debugger shell that connects to the Dart VM's debugger | 5 // Simple interactive debugger shell that connects to the Dart VM's debugger |
6 // connection port. | 6 // connection port. |
7 | 7 |
8 #import("dart:io"); | 8 #import("dart:io"); |
9 #import("dart:json"); | 9 #import("dart:json"); |
10 | 10 |
(...skipping 21 matching lines...) Expand all Loading... |
32 s Single step | 32 s Single step |
33 so Step over | 33 so Step over |
34 si Step into | 34 si Step into |
35 sbp [<file>] <line> Set breakpoint | 35 sbp [<file>] <line> Set breakpoint |
36 rbp <id> Remove breakpoint with given id | 36 rbp <id> Remove breakpoint with given id |
37 po <id> Print object info for given id | 37 po <id> Print object info for given id |
38 pc <id> Print class info for given id | 38 pc <id> Print class info for given id |
39 ll List loaded libraries | 39 ll List loaded libraries |
40 pl <id> Print dlibrary info for given id | 40 pl <id> Print dlibrary info for given id |
41 ls <libname> List loaded scripts in library | 41 ls <libname> List loaded scripts in library |
| 42 gs <lib_id> <script_url> Get source text of script in library |
42 h Print help | 43 h Print help |
43 """); | 44 """); |
44 } | 45 } |
45 | 46 |
46 | 47 |
47 void quitShell() { | 48 void quitShell() { |
48 vmStream.close(); | 49 vmStream.close(); |
49 vmSock.close(); | 50 vmSock.close(); |
50 stdin.close(); | 51 stdin.close(); |
51 } | 52 } |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
110 "params": {"objectId": Math.parseInt(args[1]) }}; | 111 "params": {"objectId": Math.parseInt(args[1]) }}; |
111 sendCmd(cmd).then((result) => handleGetObjPropsResponse(result)); | 112 sendCmd(cmd).then((result) => handleGetObjPropsResponse(result)); |
112 } else if (command == "pc" && args.length == 2) { | 113 } else if (command == "pc" && args.length == 2) { |
113 var cmd = { "id": seqNum, "command": "getClassProperties", | 114 var cmd = { "id": seqNum, "command": "getClassProperties", |
114 "params": {"classId": Math.parseInt(args[1]) }}; | 115 "params": {"classId": Math.parseInt(args[1]) }}; |
115 sendCmd(cmd).then((result) => handleGetClassPropsResponse(result)); | 116 sendCmd(cmd).then((result) => handleGetClassPropsResponse(result)); |
116 } else if (command == "pl" && args.length == 2) { | 117 } else if (command == "pl" && args.length == 2) { |
117 var cmd = { "id": seqNum, "command": "getLibraryProperties", | 118 var cmd = { "id": seqNum, "command": "getLibraryProperties", |
118 "params": {"libraryId": Math.parseInt(args[1]) }}; | 119 "params": {"libraryId": Math.parseInt(args[1]) }}; |
119 sendCmd(cmd).then((result) => handleGetLibraryPropsResponse(result)); | 120 sendCmd(cmd).then((result) => handleGetLibraryPropsResponse(result)); |
| 121 } else if (command == "gs" && args.length == 3) { |
| 122 var cmd = { "id": seqNum, "command": "getScriptSource", |
| 123 "params": { "libraryId": Math.parseInt(args[1]), |
| 124 "url": args[2] }}; |
| 125 sendCmd(cmd).then((result) => handleGetSourceResponse(result)); |
120 } else if (command == "q") { | 126 } else if (command == "q") { |
121 quitShell(); | 127 quitShell(); |
122 } else if (command == "h") { | 128 } else if (command == "h") { |
123 printHelp(); | 129 printHelp(); |
124 } else { | 130 } else { |
125 print("command '$command' not understood, try h for help"); | 131 print("command '$command' not understood, try h for help"); |
126 } | 132 } |
127 } | 133 } |
128 | 134 |
129 | 135 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 assert(globals != null); | 196 assert(globals != null); |
191 if (globals.length > 0) { | 197 if (globals.length > 0) { |
192 print(" global variables:"); | 198 print(" global variables:"); |
193 for (int i = 0; i < globals.length; i++) { | 199 for (int i = 0; i < globals.length; i++) { |
194 printNamedObject(globals[i]); | 200 printNamedObject(globals[i]); |
195 } | 201 } |
196 } | 202 } |
197 } | 203 } |
198 | 204 |
199 | 205 |
| 206 handleGetSourceResponse(response) { |
| 207 Map result = response["result"]; |
| 208 String source = result["text"]; |
| 209 print("Source text:\n$source\n--------"); |
| 210 } |
| 211 |
| 212 |
200 void handleGetLibraryResponse(response) { | 213 void handleGetLibraryResponse(response) { |
201 Map result = response["result"]; | 214 Map result = response["result"]; |
202 List libs = result["libraries"]; | 215 List libs = result["libraries"]; |
203 print("Loaded libraries:"); | 216 print("Loaded libraries:"); |
204 print(libs); | 217 print(libs); |
205 for (int i = 0; i < libs.length; i++) { | 218 for (int i = 0; i < libs.length; i++) { |
206 print(" ${libs[i]["id"]} ${libs[i]["url"]}"); | 219 print(" ${libs[i]["id"]} ${libs[i]["url"]}"); |
207 } | 220 } |
208 } | 221 } |
209 | 222 |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
346 }; | 359 }; |
347 vmInStream.onError = (err) { | 360 vmInStream.onError = (err) { |
348 print("Error in debug connection: $err"); | 361 print("Error in debug connection: $err"); |
349 quitShell(); | 362 quitShell(); |
350 }; | 363 }; |
351 vmInStream.onClosed = () { | 364 vmInStream.onClosed = () { |
352 print("VM debugger connection closed"); | 365 print("VM debugger connection closed"); |
353 quitShell(); | 366 quitShell(); |
354 }; | 367 }; |
355 } | 368 } |
OLD | NEW |