breakpoint-08.js (920B)
1 // Breakpoints are dropped from eval scripts when they finish executing. 2 // (The eval cache doesn't cache breakpoints.) 3 4 var g = newGlobal({newCompartment: true}); 5 6 g.line0 = undefined; 7 g.eval("function f() {\n" + 8 " return eval(s);\n" + 9 "}\n"); 10 g.s = ("line0 = Error().lineNumber;\n" + 11 "debugger;\n" + // line0 + 1 12 "result = 'ok';\n"); // line0 + 2 13 14 var dbg = Debugger(g); 15 var hits = 0, bphits = 0; 16 dbg.onDebuggerStatement = function (frame) { 17 assertEq(frame.type, 'eval'); 18 assertEq(frame.script.getBreakpoints().length, 0); 19 var h = {hit: function (frame) { bphits++; }}; 20 var offs = frame.script.getLineOffsets(g.line0 + 2); 21 for (var i = 0; i < offs.length; i++) 22 frame.script.setBreakpoint(offs[i], h); 23 hits++; 24 }; 25 26 for (var i = 0; i < 3; i++) { 27 assertEq(g.f(), 'ok'); 28 assertEq(g.result, 'ok'); 29 } 30 assertEq(hits, 3); 31 assertEq(bphits, 3);