Debugger-multi-01.js (660B)
1 // When there are multiple debuggers, their hooks are called in order. 2 3 var g = newGlobal({newCompartment: true}); 4 var log; 5 var arr = []; 6 7 function addDebug(msg) { 8 var dbg = new Debugger(g); 9 dbg.onDebuggerStatement = function (stack) { log += msg; }; 10 arr.push(dbg); 11 } 12 13 addDebug('a'); 14 addDebug('b'); 15 addDebug('c'); 16 17 log = ''; 18 assertEq(g.eval("debugger; 0;"), 0); 19 assertEq(log, 'abc'); 20 21 // Calling debugger hooks continues, even if one returns a resumption value 22 // other than undefined. 23 24 arr[0].onDebuggerStatement = function (stack) { 25 log += 'a'; 26 return {return: 1}; 27 }; 28 29 log = ''; 30 assertEq(g.eval("debugger; 0;"), 1); 31 assertEq(log, 'abc');