michael@0: // frame.eval works from an onPop handler. michael@0: var g = newGlobal(); michael@0: g.eval('function f(a,b) { var x = "entablature", y; debugger; return x+y+a+b; }'); michael@0: michael@0: var dbg = new Debugger(g); michael@0: var log; michael@0: michael@0: dbg.onDebuggerStatement = function handleDebugger(frame) { michael@0: log += 'd'; michael@0: frame.onPop = handlePop; michael@0: }; michael@0: michael@0: function handlePop(c) { michael@0: log += ')'; michael@0: michael@0: // Arguments must be live. michael@0: assertEq(this.eval('a').return, 'frieze'); michael@0: assertEq(this.eval('b = "architrave"').return, 'architrave'); michael@0: assertEq(this.eval('arguments[1]').return, 'architrave'); michael@0: assertEq(this.eval('b').return, 'architrave'); michael@0: michael@0: // function-scope variables must be live. michael@0: assertEq(this.eval('x').return, 'entablature'); michael@0: assertEq(this.eval('y = "cornice"').return, 'cornice'); michael@0: assertEq(this.eval('y').return, 'cornice'); michael@0: } michael@0: michael@0: log = ''; michael@0: g.eval('f("frieze", "stylobate")'); michael@0: assertEq(log, 'd)');