summaryrefslogtreecommitdiffstats
path: root/src/scripttools/debugging/scripts/commands/break.qs
diff options
context:
space:
mode:
Diffstat (limited to 'src/scripttools/debugging/scripts/commands/break.qs')
-rw-r--r--src/scripttools/debugging/scripts/commands/break.qs59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/scripttools/debugging/scripts/commands/break.qs b/src/scripttools/debugging/scripts/commands/break.qs
new file mode 100644
index 0000000..8363685
--- /dev/null
+++ b/src/scripttools/debugging/scripts/commands/break.qs
@@ -0,0 +1,59 @@
+name = "break";
+
+group = "breakpoints";
+
+shortDescription = "Set a breakpoint at specified location";
+
+longDescription = "break <file>:<line> : Sets a breakpoint at the given location.";
+longDescription += "\nbreak <line> : Sets a breakpoint at the given line of the current file.";
+
+argumentTypes = [ "script-filename" ];
+
+aliases = [ "b" ];
+
+seeAlso = [ "condition", "delete", "disable", "tbreak" ];
+
+function execute() {
+ if (arguments.length == 0) {
+ message("Missing argument.");
+ return;
+ }
+ var arg = arguments[0];
+ var colonIndex = arg.lastIndexOf(':');
+ if (colonIndex == -1) {
+ lineNumber = parseInt(arg);
+ if (isNaN(lineNumber)) {
+ message("Breakpoint location must be of the form <file>:<line> or <line>.");
+ return;
+ }
+ var sid = getCurrentScriptId();
+ if (sid == -1) {
+ message("No script.");
+ return;
+ }
+ scheduleGetScriptData(sid);
+ scriptId = sid;
+ state = 1;
+ } else {
+ fileName = arg.slice(0, colonIndex);
+ lineNumber = parseInt(arg.slice(colonIndex+1));
+ // ### resolve the script to see if it's loaded or not? (e.g. so we can issue a warning)
+ scheduleSetBreakpoint({ fileName: fileName, lineNumber: lineNumber});
+ state = 2;
+ }
+}
+
+function handleResponse(resp) {
+ if (state == 1) {
+ fileName = resp.result.fileName;
+ if (fileName.length == 0)
+ fileName = "<anonymous script, id=" + scriptId + ">";
+ scheduleSetBreakpoint({ scriptId: scriptId, lineNumber: lineNumber});
+ state = 2;
+ } else if (state == 2) {
+ if (resp.error == 0) {
+ var id = resp.result;
+ message("Breakpoint " + id + ": " + fileName + ", line " + lineNumber + ".");
+ }
+ }
+}