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