|
1 // Clearing a breakpoint by handler can clear multiple breakpoints. |
|
2 |
|
3 var g = newGlobal(); |
|
4 var dbg = Debugger(g); |
|
5 var s; |
|
6 dbg.onDebuggerStatement = function (frame) { |
|
7 s = frame.eval("f").return.script; |
|
8 }; |
|
9 g.eval("var line0 = Error().lineNumber;\n" + |
|
10 "function f(a, b) {\n" + // line0 + 1 |
|
11 " return a + b;\n" + // line0 + 2 |
|
12 "}\n" + |
|
13 "debugger;\n"); |
|
14 |
|
15 var hits = 0; |
|
16 var handler = {hit: function (frame) { hits++; s.clearBreakpoint(handler); }}; |
|
17 var offs = s.getLineOffsets(g.line0 + 2); |
|
18 for (var i = 0; i < 4; i++) { |
|
19 for (var j = 0; j < offs.length; j++) |
|
20 s.setBreakpoint(offs[j], handler); |
|
21 } |
|
22 |
|
23 assertEq(g.f(2, 2), 4); |
|
24 assertEq(hits, 1); |
|
25 assertEq(s.getBreakpoints().length, 0); |