diff -r 000000000000 -r 1918ee327afb src/scripttools/debugging/scripts/commands/break.qs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/scripttools/debugging/scripts/commands/break.qs Mon Jan 11 14:00:40 2010 +0000 @@ -0,0 +1,59 @@ +name = "break"; + +group = "breakpoints"; + +shortDescription = "Set a breakpoint at specified location"; + +longDescription = "break : : Sets a breakpoint at the given location."; +longDescription += "\nbreak : 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 : or ."); + 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 = ""; + 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 + "."); + } + } +}