diff options
Diffstat (limited to 'src/scripttools/debugging/scripts/commands/break.qs')
-rw-r--r-- | src/scripttools/debugging/scripts/commands/break.qs | 59 |
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 + "."); + } + } +} |