Debugger-debuggees-25.js (893B)
1 // Turning debugger off global at a time. 2 3 var g1 = newGlobal({newCompartment: true}); 4 var g2 = newGlobal({newCompartment: true}); 5 var g3 = newGlobal({newCompartment: true}); 6 7 g1.eval("" + function f() { 8 var name = "f"; 9 g(); 10 return name; 11 }); 12 g2.eval("" + function g() { 13 var name = "g"; 14 h(); 15 return name; 16 }); 17 g3.eval("" + function h() { 18 var name = "h"; 19 toggle(); 20 return name; 21 }); 22 23 g1.g = g2.g; 24 g2.h = g3.h; 25 26 function name(f) { 27 return f.environment.getVariable("name"); 28 } 29 30 var dbg = new Debugger; 31 g3.toggle = function () { 32 var frame; 33 34 // Add all globals. 35 dbg.addDebuggee(g1); 36 dbg.addDebuggee(g3); 37 dbg.addDebuggee(g2); 38 39 // Remove one at a time. 40 dbg.removeDebuggee(g3); 41 assertEq(name(dbg.getNewestFrame()), "g"); 42 dbg.removeDebuggee(g2); 43 assertEq(name(dbg.getNewestFrame()), "f"); 44 dbg.removeDebuggee(g1); 45 }; 46 47 g1.eval("(" + function () { f(); } + ")();");