blob: 87c4f839821b07247b4309f0f1acaa6dce8fb1b1 [file] [log] [blame]
Emily Bernierd0a1eb72015-03-24 16:35:39 -04001// Copyright 2014 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Flags: --expose-debug-as debug
6
7function f() {
8 var a = 1;
9 var b = 2;
10 return a + b;
11}
12
13var exception = null;
14var break_count = 0;
15var throw_count = 0;
16
17function listener(event, exec_state, event_data, data) {
18 try {
19 if (event == Debug.DebugEvent.Break) {
20 break_count++;
21 // Disable all breakpoints from within the debug event callback.
22 Debug.debuggerFlags().breakPointsActive.setValue(false);
23 } else if (event = Debug.DebugEvent.Exception) {
24 throw_count++;
25 // Enable all breakpoints from within the debug event callback.
26 Debug.debuggerFlags().breakPointsActive.setValue(true);
27 }
28 } catch (e) {
29 exception = e;
30 }
31}
32
33Debug = debug.Debug;
34
35Debug.setListener(listener);
36Debug.setBreakOnException();
37Debug.setBreakPoint(f, 2);
38
39f();
40f();
41
42assertEquals(1, break_count);
43assertEquals(0, throw_count);
44
45// Trigger exception event.
46try { throw 1; } catch (e) {}
47
48f();
49f();
50
51Debug.setListener(null);
52Debug.clearBreakOnException();
53Debug.debuggerFlags().breakPointsActive.setValue(true);
54
55assertEquals(2, break_count);
56assertEquals(1, throw_count);
57assertNull(exception);