| 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" as json; | 9 import "dart:json" as json; |
| 10 import "dart:utf"; | 10 import "dart:utf"; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 rbp <id> Remove breakpoint with given id | 41 rbp <id> Remove breakpoint with given id |
| 42 po <id> Print object info for given id | 42 po <id> Print object info for given id |
| 43 pl <id> <idx> [<len>] Print list element/slice | 43 pl <id> <idx> [<len>] Print list element/slice |
| 44 pc <id> Print class info for given id | 44 pc <id> Print class info for given id |
| 45 ll List loaded libraries | 45 ll List loaded libraries |
| 46 plib <id> Print library info for given library id | 46 plib <id> Print library info for given library id |
| 47 slib <id> <true|false> Set library id debuggable | 47 slib <id> <true|false> Set library id debuggable |
| 48 pg <id> Print all global variables visible within given library id | 48 pg <id> Print all global variables visible within given library id |
| 49 ls <lib_id> List loaded scripts in library | 49 ls <lib_id> List loaded scripts in library |
| 50 gs <lib_id> <script_url> Get source text of script in library | 50 gs <lib_id> <script_url> Get source text of script in library |
| 51 tok <lib_id> <script_url> Get line and token table of script in library |
| 51 epi <none|all|unhandled> Set exception pause info | 52 epi <none|all|unhandled> Set exception pause info |
| 52 i <id> Interrupt execution of given isolate id | 53 i <id> Interrupt execution of given isolate id |
| 53 h Print help | 54 h Print help |
| 54 """); | 55 """); |
| 55 } | 56 } |
| 56 | 57 |
| 57 | 58 |
| 58 void quitShell() { | 59 void quitShell() { |
| 59 streamSubscription.cancel(); | 60 streamSubscription.cancel(); |
| 60 vmSock.close(); | 61 vmSock.close(); |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 "params": { "isolateId" : isolate_id, | 175 "params": { "isolateId" : isolate_id, |
| 175 "libraryId": int.parse(args[1]) } }; | 176 "libraryId": int.parse(args[1]) } }; |
| 176 sendCmd(cmd).then((result) => handleGetGlobalVarsResponse(result)); | 177 sendCmd(cmd).then((result) => handleGetGlobalVarsResponse(result)); |
| 177 } else if (command == "gs" && args.length == 3) { | 178 } else if (command == "gs" && args.length == 3) { |
| 178 var cmd = { "id": seqNum, | 179 var cmd = { "id": seqNum, |
| 179 "command": "getScriptSource", | 180 "command": "getScriptSource", |
| 180 "params": { "isolateId" : isolate_id, | 181 "params": { "isolateId" : isolate_id, |
| 181 "libraryId": int.parse(args[1]), | 182 "libraryId": int.parse(args[1]), |
| 182 "url": args[2] } }; | 183 "url": args[2] } }; |
| 183 sendCmd(cmd).then((result) => handleGetSourceResponse(result)); | 184 sendCmd(cmd).then((result) => handleGetSourceResponse(result)); |
| 185 } else if (command == "tok" && args.length == 3) { |
| 186 var cmd = { "id": seqNum, |
| 187 "command": "getLineNumberTable", |
| 188 "params": { "isolateId" : isolate_id, |
| 189 "libraryId": int.parse(args[1]), |
| 190 "url": args[2] } }; |
| 191 sendCmd(cmd).then((result) => handleGetLineTableResponse(result)); |
| 184 } else if (command == "epi" && args.length == 2) { | 192 } else if (command == "epi" && args.length == 2) { |
| 185 var cmd = { "id": seqNum, | 193 var cmd = { "id": seqNum, |
| 186 "command": "setPauseOnException", | 194 "command": "setPauseOnException", |
| 187 "params": { "isolateId" : isolate_id, | 195 "params": { "isolateId" : isolate_id, |
| 188 "exceptions": args[1] } }; | 196 "exceptions": args[1] } }; |
| 189 sendCmd(cmd).then((result) => handleGenericResponse(result)); | 197 sendCmd(cmd).then((result) => handleGenericResponse(result)); |
| 190 } else if (command == "i" && args.length == 2) { | 198 } else if (command == "i" && args.length == 2) { |
| 191 var cmd = { "id": seqNum, | 199 var cmd = { "id": seqNum, |
| 192 "command": "interrupt", | 200 "command": "interrupt", |
| 193 "params": { "isolateId": int.parse(args[1]) } }; | 201 "params": { "isolateId": int.parse(args[1]) } }; |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 317 } | 325 } |
| 318 | 326 |
| 319 | 327 |
| 320 handleGetSourceResponse(response) { | 328 handleGetSourceResponse(response) { |
| 321 Map result = response["result"]; | 329 Map result = response["result"]; |
| 322 String source = result["text"]; | 330 String source = result["text"]; |
| 323 print("Source text:\n$source\n--------"); | 331 print("Source text:\n$source\n--------"); |
| 324 } | 332 } |
| 325 | 333 |
| 326 | 334 |
| 335 handleGetLineTableResponse(response) { |
| 336 Map result = response["result"]; |
| 337 var info = result["lines"]; |
| 338 print("Line info table:\n$info"); |
| 339 } |
| 340 |
| 341 |
| 327 void handleGetLibraryResponse(response) { | 342 void handleGetLibraryResponse(response) { |
| 328 Map result = response["result"]; | 343 Map result = response["result"]; |
| 329 List libs = result["libraries"]; | 344 List libs = result["libraries"]; |
| 330 print("Loaded libraries:"); | 345 print("Loaded libraries:"); |
| 331 print(libs); | 346 print(libs); |
| 332 for (int i = 0; i < libs.length; i++) { | 347 for (int i = 0; i < libs.length; i++) { |
| 333 print(" ${libs[i]["id"]} ${libs[i]["url"]}"); | 348 print(" ${libs[i]["id"]} ${libs[i]["url"]}"); |
| 334 } | 349 } |
| 335 } | 350 } |
| 336 | 351 |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 384 void printStackTrace(List frames) { | 399 void printStackTrace(List frames) { |
| 385 for (int i = 0; i < frames.length; i++) { | 400 for (int i = 0; i < frames.length; i++) { |
| 386 printStackFrame(i, frames[i]); | 401 printStackFrame(i, frames[i]); |
| 387 } | 402 } |
| 388 } | 403 } |
| 389 | 404 |
| 390 | 405 |
| 391 void handlePausedEvent(msg) { | 406 void handlePausedEvent(msg) { |
| 392 assert(msg["params"] != null); | 407 assert(msg["params"] != null); |
| 393 var reason = msg["params"]["reason"]; | 408 var reason = msg["params"]["reason"]; |
| 394 isolate_id = msg["params"]["id"]; | 409 isolate_id = msg["params"]["isolateId"]; |
| 395 stackTrace = msg["params"]["callFrames"]; | 410 stackTrace = msg["params"]["callFrames"]; |
| 396 assert(stackTrace != null); | 411 assert(stackTrace != null); |
| 397 assert(stackTrace.length >= 1); | 412 assert(stackTrace.length >= 1); |
| 398 curFrame = stackTrace[0]; | 413 curFrame = stackTrace[0]; |
| 399 if (reason == "breakpoint") { | 414 if (reason == "breakpoint") { |
| 400 print("Isolate $isolate_id paused on breakpoint"); | 415 print("Isolate $isolate_id paused on breakpoint"); |
| 401 } else if (reason == "interrupted") { | 416 } else if (reason == "interrupted") { |
| 402 print("Isolate $isolate_id paused due to an interrupt"); | 417 print("Isolate $isolate_id paused due to an interrupt"); |
| 403 } else { | 418 } else { |
| 404 assert(reason == "exception"); | 419 assert(reason == "exception"); |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 558 process.stdin.close(); | 573 process.stdin.close(); |
| 559 process.exitCode.then((int exitCode) { | 574 process.exitCode.then((int exitCode) { |
| 560 print('${arguments.join(" ")} exited with $exitCode'); | 575 print('${arguments.join(" ")} exited with $exitCode'); |
| 561 }); | 576 }); |
| 562 debuggerMain(); | 577 debuggerMain(); |
| 563 }); | 578 }); |
| 564 } else { | 579 } else { |
| 565 debuggerMain(); | 580 debuggerMain(); |
| 566 } | 581 } |
| 567 } | 582 } |
| OLD | NEW |