Source code
Revision control
Copy as Markdown
Other Tools
var g = newGlobal({newCompartment: true});
var dbg = new Debugger(g);
// We're going to need to eval with a thrown exception from inside
// onExceptionUnwind, so guard against infinite recursion.
var exceptionCount = 0;
dbg.onDebuggerStatement = function (frame) {
var x = frame.evalWithBindings("throw 'haha'", { rightSpelling: 4 }).throw;
assertEq(x, "haha");
};
dbg.onExceptionUnwind = function (frame, exc) {
++exceptionCount;
if (exceptionCount == 1) {
var y = frame.evalWithBindings("throw 'haha2'", { rightSpelling: 2 }).throw;
assertEq(y, "haha2");
} else {
assertEq(frame.evalWithBindings("rightSpelling + three", { three : 3 }).return, 5);
}
};
g.eval("(function () { var rightSpelling = 7; debugger; })();");
assertEq(exceptionCount, 2);