// 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");