breakpoint-multi-01.js (824B)
1 // A single Debugger object can set multiple breakpoints at an instruction. 2 3 var g = newGlobal({newCompartment: true}); 4 var dbg = Debugger(g); 5 var log = ''; 6 dbg.onDebuggerStatement = function (frame) { 7 log += 'D'; 8 function handler(i) { 9 return {hit: function (frame) { log += '' + i; }}; 10 } 11 var f = frame.eval("f").return; 12 var s = f.script; 13 var offs = s.getLineOffsets(g.line0 + 2); 14 for (var i = 0; i < 10; i++) { 15 var bp = handler(i); 16 for (var j = 0; j < offs.length; j++) 17 s.setBreakpoint(offs[j], bp); 18 } 19 assertEq(f.call().return, 42); 20 log += 'X'; 21 }; 22 23 g.eval("var line0 = Error().lineNumber;\n" + 24 "function f() {\n" + // line0 + 1 25 " return 42;\n" + // line0 + 2 26 "}\n" + 27 "debugger;\n"); 28 assertEq(log, 'D0123456789X');