tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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');