// null resumption value means terminate the debuggee var g = newGlobal(); g.debuggeeGlobal = this; g.eval("(" + function () { var dbg = new Debugger(debuggeeGlobal); dbg.onDebuggerStatement = function (frame) { if (frame.callee === null) { // The first debugger statement below. debuggeeGlobal.log += "1"; var cv = frame.eval("f();"); assertEq(cv, null); debuggeeGlobal.log += "2"; } else { // The second debugger statement. debuggeeGlobal.log += "3"; assertEq(frame.callee.name, "f"); return null; } }; } + ")()"); var log = ""; debugger; function f() { log += "4"; try { debugger; // the debugger terminates us here } finally { log += "5"; // this should not execute } } assertEq(log, "1432");