// Copyright 2016 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. var Debug = debug.Debug; var break_count = 0; var exception_count = 0; function assertCount(expected_breaks, expected_exceptions) { assertEquals(expected_breaks, break_count); assertEquals(expected_exceptions, exception_count); } function listener(event, exec_state, event_data, data) { if (event == Debug.DebugEvent.Break) { break_count++; } else if (event == Debug.DebugEvent.Exception) { exception_count++; } } function f(x) { debugger; return x + 1; } function g(x) { try { throw x; } catch (e) { } } function h(x) { var a = undefined; try { var x = a(); } catch (e) { } } Debug.setListener(listener); assertCount(0, 0); f(0); assertCount(1, 0); g(0); assertCount(1, 0); Debug.setBreakOnException(); f(0); assertCount(2, 0); g(0); assertCount(2, 1); Debug.setBreakPoint(f, 1, 0, "x == 1"); f(1); assertCount(3, 1); f(2); assertCount(3, 1); f(1); assertCount(4, 1); assertThrows(() => Debug.setBreakPoint(f, 1, 0, "x > 0")); f(1); assertCount(5, 2); f(0); assertCount(5, 2); Debug.setBreakPoint(g, 2, 0, "1 == 2"); g(1); assertCount(5, 2); assertThrows(() => Debug.setBreakPoint(g, 2, 0, "x == 1")); g(1); assertCount(5, 3); g(2); assertCount(5, 3); g(1); assertCount(5, 3); assertThrows(() => Debug.setBreakPoint(g, 2, 0, "x > 0")); g(1); assertCount(5, 4); g(0); assertCount(5, 4); h(0); assertCount(5, 5); Debug.setBreakPoint(h, 3, 0, "x > 0"); h(1); assertCount(6, 6); h(0); assertCount(6, 6); Debug.clearBreakOnException(); Debug.setListener(null);