blob: e13dbc5c35168a020de19d8cf777a63b7d35838d [file] [log] [blame]
//===-- SBBreakpoint.h ------------------------------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef LLDB_API_SBBREAKPOINT_H
#define LLDB_API_SBBREAKPOINT_H
#include "lldb/API/SBDefines.h"
class SBBreakpointListImpl;
namespace lldb {
class LLDB_API SBBreakpoint {
public:
SBBreakpoint();
SBBreakpoint(const lldb::SBBreakpoint &rhs);
SBBreakpoint(const lldb::BreakpointSP &bp_sp);
~SBBreakpoint();
const lldb::SBBreakpoint &operator=(const lldb::SBBreakpoint &rhs);
// Tests to see if the opaque breakpoint object in this object matches the
// opaque breakpoint object in "rhs".
bool operator==(const lldb::SBBreakpoint &rhs);
bool operator!=(const lldb::SBBreakpoint &rhs);
break_id_t GetID() const;
explicit operator bool() const;
bool IsValid() const;
void ClearAllBreakpointSites();
lldb::SBTarget GetTarget() const;
lldb::SBBreakpointLocation FindLocationByAddress(lldb::addr_t vm_addr);
lldb::break_id_t FindLocationIDByAddress(lldb::addr_t vm_addr);
lldb::SBBreakpointLocation FindLocationByID(lldb::break_id_t bp_loc_id);
lldb::SBBreakpointLocation GetLocationAtIndex(uint32_t index);
void SetEnabled(bool enable);
bool IsEnabled();
void SetOneShot(bool one_shot);
bool IsOneShot() const;
bool IsInternal();
uint32_t GetHitCount() const;
void SetIgnoreCount(uint32_t count);
uint32_t GetIgnoreCount() const;
void SetCondition(const char *condition);
const char *GetCondition();
void SetAutoContinue(bool auto_continue);
bool GetAutoContinue();
void SetThreadID(lldb::tid_t sb_thread_id);
lldb::tid_t GetThreadID();
void SetThreadIndex(uint32_t index);
uint32_t GetThreadIndex() const;
void SetThreadName(const char *thread_name);
const char *GetThreadName() const;
void SetQueueName(const char *queue_name);
const char *GetQueueName() const;
void SetCallback(SBBreakpointHitCallback callback, void *baton);
void SetScriptCallbackFunction(const char *callback_function_name);
SBError SetScriptCallbackFunction(const char *callback_function_name,
SBStructuredData &extra_args);
void SetCommandLineCommands(SBStringList &commands);
bool GetCommandLineCommands(SBStringList &commands);
SBError SetScriptCallbackBody(const char *script_body_text);
bool AddName(const char *new_name);
SBError AddNameWithErrorHandling(const char *new_name);
void RemoveName(const char *name_to_remove);
bool MatchesName(const char *name);
void GetNames(SBStringList &names);
size_t GetNumResolvedLocations() const;
size_t GetNumLocations() const;
bool GetDescription(lldb::SBStream &description);
bool GetDescription(lldb::SBStream &description, bool include_locations);
static bool EventIsBreakpointEvent(const lldb::SBEvent &event);
static lldb::BreakpointEventType
GetBreakpointEventTypeFromEvent(const lldb::SBEvent &event);
static lldb::SBBreakpoint GetBreakpointFromEvent(const lldb::SBEvent &event);
static lldb::SBBreakpointLocation
GetBreakpointLocationAtIndexFromEvent(const lldb::SBEvent &event,
uint32_t loc_idx);
static uint32_t
GetNumBreakpointLocationsFromEvent(const lldb::SBEvent &event_sp);
bool IsHardware() const;
// Can only be called from a ScriptedBreakpointResolver...
SBError
AddLocation(SBAddress &address);
SBStructuredData SerializeToStructuredData();
private:
friend class SBBreakpointList;
friend class SBBreakpointLocation;
friend class SBBreakpointName;
friend class SBTarget;
lldb::BreakpointSP GetSP() const;
lldb::BreakpointWP m_opaque_wp;
};
class LLDB_API SBBreakpointList {
public:
SBBreakpointList(SBTarget &target);
~SBBreakpointList();
size_t GetSize() const;
SBBreakpoint GetBreakpointAtIndex(size_t idx);
SBBreakpoint FindBreakpointByID(lldb::break_id_t);
void Append(const SBBreakpoint &sb_bkpt);
bool AppendIfUnique(const SBBreakpoint &sb_bkpt);
void AppendByID(lldb::break_id_t id);
void Clear();
protected:
friend class SBTarget;
void CopyToBreakpointIDList(lldb_private::BreakpointIDList &bp_id_list);
private:
std::shared_ptr<SBBreakpointListImpl> m_opaque_sp;
};
} // namespace lldb
#endif // LLDB_API_SBBREAKPOINT_H