Source code
Revision control
Copy as Markdown
Other Tools
// evalWithBindings works on non-top frames.
var g = newGlobal({newCompartment: true});
var dbg = new Debugger(g);
var f1;
var hits = 0;
dbg.onDebuggerStatement = function (frame) {
assertEq(frame.older.evalWithBindings("q + r", {r: 3}).return, 5);
// frame.older.older is in the same function as frame, but a different activation of it
assertEq(frame.older.older.evalWithBindings("q + r", {r: 3}).return, 6);
hits++;
};
g.eval("function f1(q) { if (q == 1) debugger; else f2(2); }");
g.eval("function f2(arg) { var q = arg; f1(1); }");
g.f1(3);
assertEq(hits, 1);