1061da546Spatrick //===-- ExceptionBreakpoint.cpp ---------------------------------*- C++ -*-===// 2061da546Spatrick // 3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information. 5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6061da546Spatrick // 7061da546Spatrick //===----------------------------------------------------------------------===// 8061da546Spatrick 9061da546Spatrick #include "ExceptionBreakpoint.h" 10*dda28197Spatrick #include "BreakpointBase.h" 11061da546Spatrick #include "VSCode.h" 12061da546Spatrick 13061da546Spatrick namespace lldb_vscode { 14061da546Spatrick SetBreakpoint()15061da546Spatrickvoid ExceptionBreakpoint::SetBreakpoint() { 16061da546Spatrick if (bp.IsValid()) 17061da546Spatrick return; 18061da546Spatrick bool catch_value = filter.find("_catch") != std::string::npos; 19061da546Spatrick bool throw_value = filter.find("_throw") != std::string::npos; 20061da546Spatrick bp = g_vsc.target.BreakpointCreateForException(language, catch_value, 21061da546Spatrick throw_value); 22*dda28197Spatrick // See comments in BreakpointBase::GetBreakpointLabel() for details of why 23*dda28197Spatrick // we add a label to our breakpoints. 24*dda28197Spatrick bp.AddName(BreakpointBase::GetBreakpointLabel()); 25061da546Spatrick } 26061da546Spatrick ClearBreakpoint()27061da546Spatrickvoid ExceptionBreakpoint::ClearBreakpoint() { 28061da546Spatrick if (!bp.IsValid()) 29061da546Spatrick return; 30061da546Spatrick g_vsc.target.BreakpointDelete(bp.GetID()); 31061da546Spatrick bp = lldb::SBBreakpoint(); 32061da546Spatrick } 33061da546Spatrick 34061da546Spatrick } // namespace lldb_vscode 35