breakpoint-multi-03.js (774B)
1 // Multiple Debugger objects can set breakpoints at the same instruction. 2 3 var g = newGlobal({newCompartment: true}); 4 function attach(g, i) { 5 var dbg = Debugger(g); 6 dbg.onDebuggerStatement = function (frame) { 7 var s = frame.eval("f").return.script; 8 var offs = s.getLineOffsets(g.line0 + 3); 9 for (var j = 0; j < offs.length; j++) 10 s.setBreakpoint(offs[j], {hit: function () { g.log += "" + i; }}); 11 }; 12 } 13 14 g.eval("var line0 = Error().lineNumber;\n" + 15 "function f() {\n" + // line0 + 1 16 " log += 'a';\n" + // line0 + 2 17 " log += 'b';\n" + // line0 + 3 18 "}\n"); 19 20 for (var i = 0; i < 3; i++) 21 attach(g, i); 22 23 g.log = ''; 24 g.eval('debugger;'); 25 g.log += 'x'; 26 g.f(); 27 assertEq(g.log, 'xa012b');