| Index: tools/ddbg.dart
|
| ===================================================================
|
| --- tools/ddbg.dart (revision 31070)
|
| +++ tools/ddbg.dart (working copy)
|
| @@ -78,14 +78,30 @@
|
|
|
|
|
| bool checkCurrentIsolate() {
|
| - if (currentIsolate != null) {
|
| - return true;
|
| + if (vmSock == null) {
|
| + print("There is no active script. Try 'help run'.");
|
| + return false;
|
| }
|
| - print("Need valid current isolate");
|
| - return false;
|
| + if (currentIsolate == null) {
|
| + print('There is no current isolate.');
|
| + return false;
|
| + }
|
| + return true;
|
| }
|
|
|
|
|
| +void setCurrentIsolate(TargetIsolate isolate) {
|
| + if (isolate != currentIsolate) {
|
| + currentIsolate = isolate;
|
| + if (mainIsolate == null) {
|
| + print("Main isolate is ${isolate.id}");
|
| + mainIsolate = isolate;
|
| + }
|
| + print("Current isolate is now ${isolate.id}");
|
| + }
|
| +}
|
| +
|
| +
|
| bool checkPaused() {
|
| if (!checkCurrentIsolate()) return false;
|
| if (currentIsolate.isPaused) return true;
|
| @@ -526,22 +542,37 @@
|
| var resume_commands =
|
| { 'r':'resume', 's':'stepOver', 'si':'stepInto', 'so':'stepOut'};
|
| if (resume_commands[command] != null) {
|
| - if (!checkPaused()) return;
|
| + if (!checkPaused()) {
|
| + cmdo.show();
|
| + return;
|
| + }
|
| var cmd = { "id": seqNum,
|
| "command": resume_commands[command],
|
| "params": { "isolateId" : currentIsolate.id } };
|
| sendCmd(cmd).then(showPromptAfter(handleResumedResponse));
|
| } else if (command == "bt") {
|
| + if (!checkCurrentIsolate()) {
|
| + cmdo.show();
|
| + return;
|
| + }
|
| var cmd = { "id": seqNum,
|
| "command": "getStackTrace",
|
| "params": { "isolateId" : currentIsolate.id } };
|
| sendCmd(cmd).then(showPromptAfter(handleStackTraceResponse));
|
| } else if (command == "ll") {
|
| + if (!checkCurrentIsolate()) {
|
| + cmdo.show();
|
| + return;
|
| + }
|
| var cmd = { "id": seqNum,
|
| "command": "getLibraries",
|
| "params": { "isolateId" : currentIsolate.id } };
|
| sendCmd(cmd).then(showPromptAfter(handleGetLibraryResponse));
|
| } else if (command == "sbp" && args.length >= 2) {
|
| + if (!checkCurrentIsolate()) {
|
| + cmdo.show();
|
| + return;
|
| + }
|
| var url, line;
|
| if (args.length == 2 && currentIsolate.pausedLocation != null) {
|
| url = currentIsolate.pausedLocation["url"];
|
| @@ -558,18 +589,30 @@
|
| "line": line }};
|
| sendCmd(cmd).then(showPromptAfter(handleSetBpResponse));
|
| } else if (command == "rbp" && args.length == 2) {
|
| + if (!checkCurrentIsolate()) {
|
| + cmdo.show();
|
| + return;
|
| + }
|
| var cmd = { "id": seqNum,
|
| "command": "removeBreakpoint",
|
| "params": { "isolateId" : currentIsolate.id,
|
| "breakpointId": int.parse(args[1]) } };
|
| sendCmd(cmd).then(showPromptAfter(handleGenericResponse));
|
| } else if (command == "ls" && args.length == 2) {
|
| + if (!checkCurrentIsolate()) {
|
| + cmdo.show();
|
| + return;
|
| + }
|
| var cmd = { "id": seqNum,
|
| "command": "getScriptURLs",
|
| "params": { "isolateId" : currentIsolate.id,
|
| "libraryId": int.parse(args[1]) } };
|
| sendCmd(cmd).then(showPromptAfter(handleGetScriptsResponse));
|
| } else if (command == "eval" && args.length > 3) {
|
| + if (!checkCurrentIsolate()) {
|
| + cmdo.show();
|
| + return;
|
| + }
|
| var expr = args.getRange(3, args.length).join(" ");
|
| var target = args[1];
|
| if (target == "obj") {
|
| @@ -589,12 +632,20 @@
|
| "expression": expr } };
|
| sendCmd(cmd).then(showPromptAfter(handleEvalResponse));
|
| } else if (command == "po" && args.length == 2) {
|
| + if (!checkCurrentIsolate()) {
|
| + cmdo.show();
|
| + return;
|
| + }
|
| var cmd = { "id": seqNum,
|
| "command": "getObjectProperties",
|
| "params": { "isolateId" : currentIsolate.id,
|
| "objectId": int.parse(args[1]) } };
|
| sendCmd(cmd).then(showPromptAfter(handleGetObjPropsResponse));
|
| } else if (command == "pl" && args.length >= 3) {
|
| + if (!checkCurrentIsolate()) {
|
| + cmdo.show();
|
| + return;
|
| + }
|
| var cmd;
|
| if (args.length == 3) {
|
| cmd = { "id": seqNum,
|
| @@ -612,18 +663,30 @@
|
| }
|
| sendCmd(cmd).then(showPromptAfter(handleGetListResponse));
|
| } else if (command == "pc" && args.length == 2) {
|
| + if (!checkCurrentIsolate()) {
|
| + cmdo.show();
|
| + return;
|
| + }
|
| var cmd = { "id": seqNum,
|
| "command": "getClassProperties",
|
| "params": { "isolateId" : currentIsolate.id,
|
| "classId": int.parse(args[1]) } };
|
| sendCmd(cmd).then(showPromptAfter(handleGetClassPropsResponse));
|
| } else if (command == "plib" && args.length == 2) {
|
| + if (!checkCurrentIsolate()) {
|
| + cmdo.show();
|
| + return;
|
| + }
|
| var cmd = { "id": seqNum,
|
| "command": "getLibraryProperties",
|
| "params": {"isolateId" : currentIsolate.id,
|
| "libraryId": int.parse(args[1]) } };
|
| sendCmd(cmd).then(showPromptAfter(handleGetLibraryPropsResponse));
|
| } else if (command == "slib" && args.length == 3) {
|
| + if (!checkCurrentIsolate()) {
|
| + cmdo.show();
|
| + return;
|
| + }
|
| var cmd = { "id": seqNum,
|
| "command": "setLibraryProperties",
|
| "params": {"isolateId" : currentIsolate.id,
|
| @@ -631,12 +694,20 @@
|
| "debuggingEnabled": args[2] } };
|
| sendCmd(cmd).then(showPromptAfter(handleSetLibraryPropsResponse));
|
| } else if (command == "pg" && args.length == 2) {
|
| + if (!checkCurrentIsolate()) {
|
| + cmdo.show();
|
| + return;
|
| + }
|
| var cmd = { "id": seqNum,
|
| "command": "getGlobalVariables",
|
| "params": { "isolateId" : currentIsolate.id,
|
| "libraryId": int.parse(args[1]) } };
|
| sendCmd(cmd).then(showPromptAfter(handleGetGlobalVarsResponse));
|
| } else if (command == "gs" && args.length == 3) {
|
| + if (!checkCurrentIsolate()) {
|
| + cmdo.show();
|
| + return;
|
| + }
|
| var cmd = { "id": seqNum,
|
| "command": "getScriptSource",
|
| "params": { "isolateId" : currentIsolate.id,
|
| @@ -644,6 +715,10 @@
|
| "url": args[2] } };
|
| sendCmd(cmd).then(showPromptAfter(handleGetSourceResponse));
|
| } else if (command == "tok" && args.length == 3) {
|
| + if (!checkCurrentIsolate()) {
|
| + cmdo.show();
|
| + return;
|
| + }
|
| var cmd = { "id": seqNum,
|
| "command": "getLineNumberTable",
|
| "params": { "isolateId" : currentIsolate.id,
|
| @@ -651,19 +726,26 @@
|
| "url": args[2] } };
|
| sendCmd(cmd).then(showPromptAfter(handleGetLineTableResponse));
|
| } else if (command == "epi" && args.length == 2) {
|
| + if (!checkCurrentIsolate()) {
|
| + cmdo.show();
|
| + return;
|
| + }
|
| var cmd = { "id": seqNum,
|
| "command": "setPauseOnException",
|
| "params": { "isolateId" : currentIsolate.id,
|
| "exceptions": args[1] } };
|
| sendCmd(cmd).then(showPromptAfter(handleGenericResponse));
|
| } else if (command == "li") {
|
| + if (!checkCurrentIsolate()) {
|
| + cmdo.show();
|
| + return;
|
| + }
|
| var cmd = { "id": seqNum, "command": "getIsolateIds" };
|
| sendCmd(cmd).then(showPromptAfter(handleGetIsolatesResponse));
|
| } else if (command == "sci" && args.length == 2) {
|
| var id = int.parse(args[1]);
|
| if (targetIsolates[id] != null) {
|
| - currentIsolate = targetIsolates[id];
|
| - print("Setting current target isolate to $id");
|
| + setCurrentIsolate(targetIsolates[id]);
|
| } else {
|
| print("$id is not a valid isolate id");
|
| }
|
| @@ -1027,6 +1109,7 @@
|
| assert(!isolate.isPaused);
|
| var location = msg["params"]["location"];;
|
| assert(location != null);
|
| + setCurrentIsolate(isolate);
|
| isolate.pausedLocation = location;
|
| if (reason == "breakpoint") {
|
| var bpId = (msg["params"]["breakpointId"]);
|
| @@ -1052,11 +1135,6 @@
|
| print("Isolate $isolateId has been created.");
|
| assert(targetIsolates[isolateId] == null);
|
| targetIsolates[isolateId] = new TargetIsolate(isolateId);
|
| - if (mainIsolate == null) {
|
| - mainIsolate = targetIsolates[isolateId];
|
| - currentIsolate = mainIsolate;
|
| - print("Current isolate set to ${currentIsolate.id}.");
|
| - }
|
| } else {
|
| assert(reason == "shutdown");
|
| var isolate = targetIsolates.remove(isolateId);
|
|
|