|
1 // Breakpoints are dropped from eval scripts when they finish executing. |
|
2 // (The eval cache doesn't cache breakpoints.) |
|
3 |
|
4 var g = newGlobal(); |
|
5 |
|
6 g.line0 = undefined; |
|
7 g.eval("function f() {\n" + |
|
8 " return eval(s);\n" + |
|
9 "}\n"); |
|
10 g.s = ("line0 = Error().lineNumber;\n" + |
|
11 "debugger;\n" + // line0 + 1 |
|
12 "result = 'ok';\n"); // line0 + 2 |
|
13 |
|
14 var dbg = Debugger(g); |
|
15 var hits = 0, bphits = 0; |
|
16 dbg.onDebuggerStatement = function (frame) { |
|
17 assertEq(frame.type, 'eval'); |
|
18 assertEq(frame.script.getBreakpoints().length, 0); |
|
19 var h = {hit: function (frame) { bphits++; }}; |
|
20 var offs = frame.script.getLineOffsets(g.line0 + 2); |
|
21 for (var i = 0; i < offs.length; i++) |
|
22 frame.script.setBreakpoint(offs[i], h); |
|
23 hits++; |
|
24 }; |
|
25 |
|
26 for (var i = 0; i < 3; i++) { |
|
27 assertEq(g.f(), 'ok'); |
|
28 assertEq(g.result, 'ok'); |
|
29 } |
|
30 assertEq(hits, 3); |
|
31 assertEq(bphits, 3); |