Debugger-multi-03.js (683B)
1 // Q: But who shall debug the debuggers? A: jimb 2 3 var log = ''; 4 5 function addDebug(g, id) { 6 var debuggerGlobal = newGlobal({newCompartment: true}); 7 debuggerGlobal.debuggee = g; 8 debuggerGlobal.id = id; 9 debuggerGlobal.print = function (s) { log += s; }; 10 debuggerGlobal.eval( 11 'var dbg = new Debugger(debuggee);\n' + 12 'dbg.onDebuggerStatement = function () { print(id); debugger; print(id); };\n'); 13 return debuggerGlobal; 14 } 15 16 var base = newGlobal({newCompartment: true}); 17 var top = base; 18 for (var i = 0; i < 8; i++) // why have 2 debuggers when you can have 8 19 top = addDebug(top, i); 20 base.eval("debugger;"); 21 assertEq(log, '0123456776543210');