// frame.onStep can coexist with breakpoints. var g = newGlobal({newCompartment: true}); var dbg = Debugger(g); var log = ''; dbg.onEnterFrame = function (frame) { var handler = {hit: function () { log += 'B'; }}; var lines = frame.script.getAllOffsets(); for (var line in lines) { line = Number(line); var offs = lines[line]; for (var i = 0; i < offs.length; i++) frame.script.setBreakpoint(offs[i], handler); } frame.onStep = function () { log += 's'; }; }; g.eval("one = 1;\n" + "two = 2;\n" + "three = 3;\n" + "four = 4;\n"); assertEq(g.four, 4); // Breakpoints hit on all four lines, plus the final line. assertEq(log.replace(/[^B]/g, ''), 'BBBBB'); // onStep was called between each pair of breakpoints. assertEq(/BB/.exec(log), null);