// When multiple frames have onPop handlers, they are called in the correct order. var g = newGlobal({newCompartment: true});
g.eval("function f() { debugger; }");
g.eval("function g() { f(); }");
g.eval("function h() { g(); }");
g.eval("function i() { h(); }");
var dbg = new Debugger(g); var log; function logger(frame, mark) { returnfunction (completion) {
assertEq(this, frame);
assertEq('return' in completion, true);
log += mark;
};
}
dbg.onEnterFrame = function handleEnter(f) {
log += "(" + f.callee.name; // Note that this establishes a distinct function object as each // frame's onPop handler. Thus, a pass proves that each frame is // remembering its handler separately.
f.onPop = logger(f, f.callee.name + ")");
};
dbg.onDebuggerStatement = function handleDebugger(f) {
log += 'd';
};
log = '';
g.i();
assertEq(log, "(i(h(g(fdf)g)h)i)");
Messung V0.5
¤ Dauer der Verarbeitung: 0.15 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.