// Q: But who shall debug the debuggers? A: jimb var log = ''; function addDebug(g, id) { var debuggerGlobal = newGlobal(); debuggerGlobal.debuggee = g; debuggerGlobal.id = id; debuggerGlobal.print = function (s) { log += s; }; debuggerGlobal.eval( 'var dbg = new Debugger(debuggee);\n' + 'dbg.onDebuggerStatement = function () { print(id); debugger; print(id); };\n'); return debuggerGlobal; } var base = newGlobal(); var top = base; for (var i = 0; i < 8; i++) // why have 2 debuggers when you can have 8 top = addDebug(top, i); base.eval("debugger;"); assertEq(log, '0123456776543210');