Source code

Revision control

Copy as Markdown

Other Tools

// Basic call chain.
var g = newGlobal({newCompartment: true});
var result = null;
var dbg = new Debugger(g);
dbg.onDebuggerStatement = function (frame) {
var a = [];
assertEq(frame === frame.older, false);
for (; frame; frame = frame.older)
a.push(frame.type === 'call' ? frame.callee.name : frame.type);
a.reverse();
result = a.join(", ");
};
g.eval("function first() { return second(); }");
g.eval("function second() { return eval('third()'); }");
g.eval("function third() { debugger; }");
g.evaluate("first();");
assertEq(result, "global, first, second, eval, third");