LLDB mainline
lldb_private::BreakpointLocation Class Reference

General Outline: A breakpoint location is defined by the breakpoint that produces it, and the address that resulted in this particular instantiation. More...

#include <BreakpointLocation.h>

Inheritance diagram for lldb_private::BreakpointLocation:
[legend]

Public Member Functions

 ~BreakpointLocation ()
lldb::addr_t GetLoadAddress () const
 Gets the load address for this breakpoint location.
AddressGetAddress ()
 Gets the Address for this breakpoint location.
BreakpointGetBreakpoint ()
 Gets the Breakpoint that created this breakpoint location.
TargetGetTarget ()
bool ShouldStop (StoppointCallbackContext *context)
 Determines whether we should stop due to a hit at this breakpoint location.
llvm::Error SetEnabled (bool enabled)
 If enabled is true, enable the breakpoint, if false disable it.
bool IsEnabled () const
 Check the Enable/Disable state.
void SetAutoContinue (bool auto_continue)
 If auto_continue is true, set the breakpoint to continue when hit.
bool IsAutoContinue () const
 Check the AutoContinue state.
uint32_t GetHitCount () const
 Return the current Hit Count.
void ResetHitCount ()
 Resets the current Hit Count.
uint32_t GetIgnoreCount () const
 Return the current Ignore Count.
void SetIgnoreCount (uint32_t n)
 Set the breakpoint to ignore the next count breakpoint hits.
void SetCallback (BreakpointHitCallback callback, const lldb::BatonSP &callback_baton_sp, bool is_synchronous)
 Set the callback action invoked when the breakpoint is hit.
void SetCallback (BreakpointHitCallback callback, void *baton, bool is_synchronous)
void ClearCallback ()
void SetCondition (StopCondition condition)
 Set the breakpoint location's condition.
const StopConditionGetCondition () const
 Return the breakpoint condition.
bool ConditionSaysStop (ExecutionContext &exe_ctx, Status &error)
void SetThreadID (lldb::tid_t thread_id)
 Set the valid thread to be checked when the breakpoint is hit.
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
llvm::Error ResolveBreakpointSite ()
 Try to resolve the breakpoint site for this location.
llvm::Error ClearBreakpointSite ()
 Clear this breakpoint location's breakpoint site - for instance when disabling the breakpoint.
bool IsResolved () const
 Return whether this breakpoint location has a breakpoint site.
lldb::BreakpointSiteSP GetBreakpointSite () const
void GetDescription (Stream *s, lldb::DescriptionLevel level)
 Print a description of this breakpoint location to the stream s.
void Dump (Stream *s) const
 Standard "Dump" method. At present it does nothing.
BreakpointOptionsGetLocationOptions ()
 Use this to set location specific breakpoint options.
const BreakpointOptionsGetOptionsSpecifyingKind (BreakpointOptions::OptionKind kind) const
 Use this to access breakpoint options from this breakpoint location.
bool ValidForThisThread (Thread &thread)
bool InvokeCallback (StoppointCallbackContext *context)
 Invoke the callback action when the breakpoint is hit.
bool IsCallbackSynchronous ()
 Report whether the callback for this location is synchronous or not.
bool ShouldResolveIndirectFunctions ()
 Returns whether we should resolve Indirect functions in setting the breakpoint site for this location.
bool IsIndirect ()
 Returns whether the address set in the breakpoint site for this location was found by resolving an indirect symbol.
void SetIsIndirect (bool is_indirect)
bool IsReExported ()
 Returns whether the address set in the breakpoint location was re-routed to the target of a re-exported symbol.
void SetIsReExported (bool is_reexported)
bool EquivalentToLocation (BreakpointLocation &location)
 Returns whether the two breakpoint locations might represent "equivalent locations".
lldb::break_id_t GetID () const
 Returns the breakpoint location ID.
bool SetPreferredLineEntry (const LineEntry &line_entry)
 Set the line entry that should be shown to users for this location.
const std::optional< LineEntryGetPreferredLineEntry ()

Protected Member Functions

bool SetBreakpointSite (lldb::BreakpointSiteSP &bp_site_sp)
 Set the breakpoint site for this location to bp_site_sp.
void DecrementIgnoreCount ()
bool IgnoreCountShouldStop ()
 BreakpointLocation::IgnoreCountShouldStop can only be called once per stop.
std::optional< uint32_t > GetSuggestedStackFrameIndex ()
 If this location knows that the virtual stack frame it represents is not frame 0, return the suggested stack frame instead.

Private Member Functions

void SwapLocation (lldb::BreakpointLocationSP swap_from)
void BumpHitCount ()
void UndoBumpHitCount ()
void SetThreadIDInternal (lldb::tid_t thread_id)
 Updates the thread ID internally.
 BreakpointLocation (lldb::break_id_t bid, Breakpoint &owner, const Address &addr, lldb::tid_t tid, bool check_for_resolver=true)
 Constructor.
void SetShouldResolveIndirectFunctions (bool do_resolve)
void SendBreakpointLocationChangedEvent (lldb::BreakpointEventType eventKind)
 BreakpointLocation (const BreakpointLocation &)=delete
const BreakpointLocationoperator= (const BreakpointLocation &)=delete

Private Attributes

bool m_should_resolve_indirect_functions
bool m_is_reexported
bool m_is_indirect
Address m_address
 The address defining this location.
Breakpointm_owner
 The breakpoint that produced this object.
std::unique_ptr< BreakpointOptionsm_options_up
 Breakpoint options pointer, nullptr if we're using our breakpoint's options.
lldb::BreakpointSiteSP m_bp_site_sp
 Our breakpoint site (it may be shared by more than one location.)
lldb::UserExpressionSP m_user_expression_sp
 The compiled expression to use in testing our condition.
std::mutex m_condition_mutex
 Guards parsing and evaluation of the condition, which could be evaluated by multiple processes.
size_t m_condition_hash
 For testing whether the condition source code changed.
lldb::break_id_t m_loc_id
 Breakpoint location ID.
StoppointHitCounter m_hit_counter
 Number of times this breakpoint location has been hit.
std::optional< LineEntrym_preferred_line_entry
 If this exists, use it to print the stop description rather than the LineEntry m_address resolves to directly.

Friends

class BreakpointSite
class BreakpointLocationList
class Process
class StopInfoBreakpoint

Detailed Description

General Outline: A breakpoint location is defined by the breakpoint that produces it, and the address that resulted in this particular instantiation.

"lldb/Breakpoint/BreakpointLocation.h" Class that manages one unique (by address) instance of a logical breakpoint.

Each breakpoint location also may have a breakpoint site if its address has been loaded into the program. Finally it has a settable options object.

FIXME: Should we also store some fingerprint for the location, so we can map one location to the "equivalent location" on rerun? This would be useful if you've set options on the locations.

Definition at line 39 of file BreakpointLocation.h.

Constructor & Destructor Documentation

◆ ~BreakpointLocation()

BreakpointLocation::~BreakpointLocation ( )

Definition at line 48 of file BreakpointLocation.cpp.

References ClearBreakpointSite().

◆ BreakpointLocation() [1/2]

lldb_private::BreakpointLocation::BreakpointLocation ( lldb::break_id_t bid,
Breakpoint & owner,
const Address & addr,
lldb::tid_t tid,
bool check_for_resolver = true )
private

Constructor.

Parameters
[in]ownerA back pointer to the breakpoint that owns this location.
[in]addrThe Address defining this location.
[in]tidThe thread for which this breakpoint location is valid, or LLDB_INVALID_THREAD_ID if it is valid for all threads.

Referenced by BreakpointLocation(), EquivalentToLocation(), and operator=().

◆ BreakpointLocation() [2/2]

lldb_private::BreakpointLocation::BreakpointLocation ( const BreakpointLocation & )
privatedelete

References BreakpointLocation().

Member Function Documentation

◆ BumpHitCount()

void BreakpointLocation::BumpHitCount ( )
private

Definition at line 403 of file BreakpointLocation.cpp.

References IsEnabled(), m_hit_counter, and m_owner.

◆ ClearBreakpointSite()

llvm::Error BreakpointLocation::ClearBreakpointSite ( )

Clear this breakpoint location's breakpoint site - for instance when disabling the breakpoint.

Definition at line 456 of file BreakpointLocation.cpp.

References GetBreakpoint(), GetID(), m_bp_site_sp, and m_owner.

Referenced by SetEnabled(), and ~BreakpointLocation().

◆ ClearCallback()

void BreakpointLocation::ClearCallback ( )

◆ ConditionSaysStop()

◆ DecrementIgnoreCount()

void BreakpointLocation::DecrementIgnoreCount ( )
protected

Definition at line 336 of file BreakpointLocation.cpp.

References m_options_up.

Referenced by IgnoreCountShouldStop().

◆ Dump()

◆ EquivalentToLocation()

bool lldb_private::BreakpointLocation::EquivalentToLocation ( BreakpointLocation & location)

Returns whether the two breakpoint locations might represent "equivalent locations".

This is used when modules changed to determine if a Location in the old module might be the "same as" the input location.

Parameters
[in]locationThe location to compare against.
Returns
true or false as given in the description above.

References BreakpointLocation().

◆ GetAddress()

Address & BreakpointLocation::GetAddress ( )

Gets the Address for this breakpoint location.

Returns
Returns breakpoint location Address.

Definition at line 63 of file BreakpointLocation.cpp.

References m_address.

Referenced by lldb_private::BreakpointLocationList::RemoveInvalidLocations().

◆ GetBreakpoint()

Breakpoint & BreakpointLocation::GetBreakpoint ( )

Gets the Breakpoint that created this breakpoint location.

Returns
Returns the owning breakpoint.

Definition at line 65 of file BreakpointLocation.cpp.

References m_owner.

Referenced by ClearBreakpointSite(), and IgnoreCountShouldStop().

◆ GetBreakpointSite()

lldb::BreakpointSiteSP BreakpointLocation::GetBreakpointSite ( ) const

Definition at line 423 of file BreakpointLocation.cpp.

References m_bp_site_sp.

◆ GetCondition()

const StopCondition & BreakpointLocation::GetCondition ( ) const

◆ GetDescription()

void BreakpointLocation::GetDescription ( Stream * s,
lldb::DescriptionLevel level )

Print a description of this breakpoint location to the stream s.

Parameters
[in]sThe stream to which to print the description.
[in]levelThe description level that indicates the detail level to provide.
See also
lldb::DescriptionLevel

Definition at line 473 of file BreakpointLocation.cpp.

References lldb_private::ConstString::AsCString(), lldb_private::Stream::AsRawOstream(), lldb_private::Address::CalculateSymbolContextSymbol(), lldb_private::SymbolContext::comp_unit, lldb_private::ConstString::Dump(), lldb_private::LineEntry::DumpStopContext(), lldb_private::SymbolContext::DumpStopContext(), lldb_private::Address::DumpStyleFileAddress, lldb_private::Address::DumpStyleLoadAddress, lldb_private::Address::DumpStyleModuleWithFileAddress, lldb::eDescriptionLevelBrief, lldb::eDescriptionLevelFull, lldb::eDescriptionLevelInitial, lldb::eDescriptionLevelVerbose, lldb_private::Stream::EOL(), lldb_private::SymbolContext::function, lldb_private::BreakpointID::GetCanonicalReference(), lldb_private::ConstString::GetCString(), lldb_private::FileSpec::GetFilename(), GetHitCount(), GetID(), lldb_private::Function::GetMangled(), lldb_private::Mangled::GetMangledName(), lldb_private::Function::GetName(), lldb_private::Symbol::GetName(), GetPreferredLineEntry(), lldb_private::CompileUnit::GetPrimaryFile(), lldb_private::Target::GetProcessSP(), lldb_private::Stream::Indent(), lldb_private::Stream::IndentLess(), lldb_private::Stream::IndentMore(), IsIndirect(), IsReExported(), IsResolved(), lldb_private::LineEntry::line, lldb_private::SymbolContext::line_entry, m_address, m_bp_site_sp, m_options_up, m_owner, lldb_private::SymbolContext::module_sp, lldb_private::Stream::Printf(), lldb_private::Stream::PutCString(), lldb_private::Address::SetLoadAddress(), and lldb_private::SymbolContext::symbol.

Referenced by lldb_private::Breakpoint::GetDescription(), and ShouldStop().

◆ GetHitCount()

uint32_t lldb_private::BreakpointLocation::GetHitCount ( ) const
inline

Return the current Hit Count.

Definition at line 90 of file BreakpointLocation.h.

References m_hit_counter.

Referenced by Dump(), and GetDescription().

◆ GetID()

lldb::break_id_t lldb_private::BreakpointLocation::GetID ( ) const
inline

Returns the breakpoint location ID.

Definition at line 273 of file BreakpointLocation.h.

References m_loc_id.

Referenced by ClearBreakpointSite(), Dump(), lldb_private::BreakpointIDList::FindAndReplaceIDRanges(), GetDescription(), and InvokeCallback().

◆ GetIgnoreCount()

uint32_t BreakpointLocation::GetIgnoreCount ( ) const

Return the current Ignore Count.

Returns
The number of breakpoint hits to be ignored.

Definition at line 326 of file BreakpointLocation.cpp.

References lldb_private::BreakpointOptions::eIgnoreCount, lldb_private::BreakpointOptions::GetIgnoreCount(), and GetOptionsSpecifyingKind().

Referenced by Dump().

◆ GetLoadAddress()

lldb::addr_t BreakpointLocation::GetLoadAddress ( ) const

Gets the load address for this breakpoint location.

Returns
Returns breakpoint location load address, LLDB_INVALID_ADDRESS if not yet set.

Definition at line 52 of file BreakpointLocation.cpp.

References m_address, and m_owner.

◆ GetLocationOptions()

BreakpointOptions & BreakpointLocation::GetLocationOptions ( )

Use this to set location specific breakpoint options.

It will create a copy of the containing breakpoint's options if that hasn't been done already

Returns
A reference to the breakpoint options.

Definition at line 359 of file BreakpointLocation.cpp.

References m_options_up.

Referenced by ClearCallback(), CommandObjectBreakpointModify::DoExecute(), SetAutoContinue(), SetCallback(), SetCallback(), SetCondition(), SetEnabled(), SetIgnoreCount(), SetQueueName(), SetThreadIDInternal(), SetThreadIndex(), and SetThreadName().

◆ GetOptionsSpecifyingKind()

const BreakpointOptions & BreakpointLocation::GetOptionsSpecifyingKind ( BreakpointOptions::OptionKind kind) const

Use this to access breakpoint options from this breakpoint location.

This will return the options that have a setting for the specified BreakpointOptions kind.

Parameters
[in]kindThe particular option you are looking up.
Returns
A pointer to the containing breakpoint's options if this location doesn't have its own copy.

Definition at line 56 of file BreakpointLocation.cpp.

References m_options_up, and m_owner.

Referenced by Dump(), GetCondition(), GetIgnoreCount(), GetQueueName(), GetThreadID(), GetThreadIndex(), GetThreadName(), and ValidForThisThread().

◆ GetPreferredLineEntry()

const std::optional< LineEntry > lldb_private::BreakpointLocation::GetPreferredLineEntry ( )
inline

Definition at line 290 of file BreakpointLocation.h.

References m_preferred_line_entry.

Referenced by GetDescription(), and GetSuggestedStackFrameIndex().

◆ GetQueueName()

◆ GetSuggestedStackFrameIndex()

std::optional< uint32_t > BreakpointLocation::GetSuggestedStackFrameIndex ( )
protected

If this location knows that the virtual stack frame it represents is not frame 0, return the suggested stack frame instead.

This will happen when the location's address contains a "virtual inlined call stack" and the breakpoint was set on a file & line that are not at the bottom of that stack. For now we key off the "preferred line entry" - looking for that in the blocks that start with the stop PC. This version of the API doesn't take an "inlined" parameter because it only changes frames in the inline stack.

Definition at line 666 of file BreakpointLocation.cpp.

References lldb_private::SymbolContext::block, lldb_private::LineEntry::column, lldb_private::LineEntry::Compare(), lldb_private::InlineFunctionInfo::GetCallSite(), lldb_private::Block::GetContainingInlinedBlock(), lldb_private::FunctionInfo::GetDeclaration(), lldb_private::LineEntry::GetFile(), lldb_private::Block::GetInlinedFunctionInfo(), lldb_private::Block::GetInlinedParent(), GetPreferredLineEntry(), lldb_private::Block::GetStartAddress(), lldb_private::LineEntry::line, lldb_private::SymbolContext::line_entry, and m_address.

◆ GetTarget()

Target & BreakpointLocation::GetTarget ( )

Definition at line 67 of file BreakpointLocation.cpp.

References m_owner.

Referenced by ConditionSaysStop().

◆ GetThreadID()

◆ GetThreadIndex()

◆ GetThreadName()

◆ IgnoreCountShouldStop()

bool BreakpointLocation::IgnoreCountShouldStop ( )
protected

BreakpointLocation::IgnoreCountShouldStop can only be called once per stop.

This method checks first against the loc and then the owner. It also takes care of decrementing the ignore counters. If it returns false we should continue, otherwise stop.

Definition at line 344 of file BreakpointLocation.cpp.

References DecrementIgnoreCount(), GetBreakpoint(), lldb_private::Breakpoint::GetIgnoreCount(), m_options_up, and m_owner.

◆ InvokeCallback()

bool BreakpointLocation::InvokeCallback ( StoppointCallbackContext * context)

Invoke the callback action when the breakpoint is hit.

Meant to be used by the BreakpointLocation class.

Parameters
[in]contextDescribed the breakpoint event.
Returns
true if the target should stop at this breakpoint and false not.

Definition at line 174 of file BreakpointLocation.cpp.

References GetID(), m_options_up, and m_owner.

Referenced by ShouldStop().

◆ IsAutoContinue()

bool BreakpointLocation::IsAutoContinue ( ) const

Check the AutoContinue state.

Returns
true if the breakpoint is set to auto-continue, false if not.

Definition at line 85 of file BreakpointLocation.cpp.

References lldb_private::BreakpointOptions::eAutoContinue, m_options_up, and m_owner.

◆ IsCallbackSynchronous()

bool BreakpointLocation::IsCallbackSynchronous ( )

Report whether the callback for this location is synchronous or not.

Returns
true if the callback is synchronous and false if not.

Definition at line 180 of file BreakpointLocation.cpp.

References m_options_up, and m_owner.

◆ IsEnabled()

bool BreakpointLocation::IsEnabled ( ) const

Check the Enable/Disable state.

Returns
true if the breakpoint is enabled, false if disabled.

Definition at line 69 of file BreakpointLocation.cpp.

References m_options_up, and m_owner.

Referenced by BumpHitCount(), ShouldStop(), and UndoBumpHitCount().

◆ IsIndirect()

bool lldb_private::BreakpointLocation::IsIndirect ( )
inline

Returns whether the address set in the breakpoint site for this location was found by resolving an indirect symbol.

Returns
true or false as given in the description above.

Definition at line 248 of file BreakpointLocation.h.

References m_is_indirect.

Referenced by GetDescription().

◆ IsReExported()

bool lldb_private::BreakpointLocation::IsReExported ( )
inline

Returns whether the address set in the breakpoint location was re-routed to the target of a re-exported symbol.

Returns
true or false as given in the description above.

Definition at line 257 of file BreakpointLocation.h.

References m_is_reexported.

Referenced by GetDescription().

◆ IsResolved()

bool BreakpointLocation::IsResolved ( ) const

Return whether this breakpoint location has a breakpoint site.

Returns
true if there was a breakpoint site for this breakpoint location, false otherwise.

Definition at line 419 of file BreakpointLocation.cpp.

References m_bp_site_sp.

Referenced by Dump(), GetDescription(), and ResolveBreakpointSite().

◆ operator=()

const BreakpointLocation & lldb_private::BreakpointLocation::operator= ( const BreakpointLocation & )
privatedelete

References BreakpointLocation().

◆ ResetHitCount()

void lldb_private::BreakpointLocation::ResetHitCount ( )
inline

Resets the current Hit Count.

Definition at line 93 of file BreakpointLocation.h.

References m_hit_counter.

◆ ResolveBreakpointSite()

llvm::Error BreakpointLocation::ResolveBreakpointSite ( )

Try to resolve the breakpoint site for this location.

Definition at line 427 of file BreakpointLocation.cpp.

References lldb_private::Process::CreateBreakpointSite(), IsResolved(), LLDB_INVALID_BREAK_ID, m_address, m_bp_site_sp, m_owner, and Process.

Referenced by SetEnabled().

◆ SendBreakpointLocationChangedEvent()

void BreakpointLocation::SendBreakpointLocationChangedEvent ( lldb::BreakpointEventType eventKind)
private

◆ SetAutoContinue()

void BreakpointLocation::SetAutoContinue ( bool auto_continue)

If auto_continue is true, set the breakpoint to continue when hit.

Definition at line 92 of file BreakpointLocation.cpp.

References GetLocationOptions(), SendBreakpointLocationChangedEvent(), and lldb_private::BreakpointOptions::SetAutoContinue().

◆ SetBreakpointSite()

bool BreakpointLocation::SetBreakpointSite ( lldb::BreakpointSiteSP & bp_site_sp)
protected

Set the breakpoint site for this location to bp_site_sp.

Parameters
[in]bp_site_spThe breakpoint site we are setting for this location.
Returns
true if we were successful at setting the breakpoint site, false otherwise.

Definition at line 450 of file BreakpointLocation.cpp.

References m_bp_site_sp, and SendBreakpointLocationChangedEvent().

◆ SetCallback() [1/2]

void BreakpointLocation::SetCallback ( BreakpointHitCallback callback,
const lldb::BatonSP & callback_baton_sp,
bool is_synchronous )

Set the callback action invoked when the breakpoint is hit.

The callback will return a bool indicating whether the target should stop at this breakpoint or not.

Parameters
[in]callbackThe method that will get called when the breakpoint is hit.
[in]callback_baton_spA shared pointer to a Baton that provides the void * needed for the callback.
See also
lldb_private::Baton

Definition at line 195 of file BreakpointLocation.cpp.

References GetLocationOptions(), SendBreakpointLocationChangedEvent(), and lldb_private::BreakpointOptions::SetCallback().

◆ SetCallback() [2/2]

void BreakpointLocation::SetCallback ( BreakpointHitCallback callback,
void * baton,
bool is_synchronous )

◆ SetCondition()

void BreakpointLocation::SetCondition ( StopCondition condition)

Set the breakpoint location's condition.

Parameters
[in]conditionThe condition to evaluate when the breakpoint is hit.

Definition at line 206 of file BreakpointLocation.cpp.

References GetLocationOptions(), SendBreakpointLocationChangedEvent(), and lldb_private::BreakpointOptions::SetCondition().

◆ SetEnabled()

llvm::Error BreakpointLocation::SetEnabled ( bool enabled)

◆ SetIgnoreCount()

void BreakpointLocation::SetIgnoreCount ( uint32_t n)

Set the breakpoint to ignore the next count breakpoint hits.

Parameters
[in]nThe number of breakpoint hits to ignore.

Definition at line 331 of file BreakpointLocation.cpp.

References GetLocationOptions(), SendBreakpointLocationChangedEvent(), and lldb_private::BreakpointOptions::SetIgnoreCount().

◆ SetIsIndirect()

void lldb_private::BreakpointLocation::SetIsIndirect ( bool is_indirect)
inline

Definition at line 250 of file BreakpointLocation.h.

References m_is_indirect.

◆ SetIsReExported()

void lldb_private::BreakpointLocation::SetIsReExported ( bool is_reexported)
inline

Definition at line 259 of file BreakpointLocation.h.

References m_is_reexported.

◆ SetPreferredLineEntry()

bool lldb_private::BreakpointLocation::SetPreferredLineEntry ( const LineEntry & line_entry)
inline

Set the line entry that should be shown to users for this location.

It is up to the caller to verify that this is a valid entry to show. The current use of this is to distinguish among line entries from a virtual inlined call stack that all share the same address. The line entry must have the same start address as the address for this location.

Definition at line 281 of file BreakpointLocation.h.

References lldb_private::AddressRange::GetBaseAddress(), m_address, m_preferred_line_entry, and lldb_private::LineEntry::range.

◆ SetQueueName()

void BreakpointLocation::SetQueueName ( const char * queue_name)

◆ SetShouldResolveIndirectFunctions()

void lldb_private::BreakpointLocation::SetShouldResolveIndirectFunctions ( bool do_resolve)
inlineprivate

Definition at line 394 of file BreakpointLocation.h.

References m_should_resolve_indirect_functions.

◆ SetThreadID()

void BreakpointLocation::SetThreadID ( lldb::tid_t thread_id)

Set the valid thread to be checked when the breakpoint is hit.

Parameters
[in]thread_idIf this thread hits the breakpoint, we stop, otherwise not.

Definition at line 97 of file BreakpointLocation.cpp.

References SendBreakpointLocationChangedEvent(), and SetThreadIDInternal().

◆ SetThreadIDInternal()

void BreakpointLocation::SetThreadIDInternal ( lldb::tid_t thread_id)
private

Updates the thread ID internally.

This method was created to handle actually mutating the thread ID internally because SetThreadID broadcasts an event in addition to mutating state. The constructor calls this instead of SetThreadID to avoid the broadcast.

Parameters
[in]thread_idThe new thread ID.

Definition at line 719 of file BreakpointLocation.cpp.

References GetLocationOptions(), LLDB_INVALID_THREAD_ID, m_options_up, and lldb_private::BreakpointOptions::SetThreadID().

Referenced by SetThreadID().

◆ SetThreadIndex()

◆ SetThreadName()

void BreakpointLocation::SetThreadName ( const char * thread_name)

◆ ShouldResolveIndirectFunctions()

bool lldb_private::BreakpointLocation::ShouldResolveIndirectFunctions ( )
inline

Returns whether we should resolve Indirect functions in setting the breakpoint site for this location.

Returns
true if the breakpoint SITE for this location should be set on the resolved location for Indirect functions.

Definition at line 239 of file BreakpointLocation.h.

References m_should_resolve_indirect_functions.

◆ ShouldStop()

bool BreakpointLocation::ShouldStop ( StoppointCallbackContext * context)

Determines whether we should stop due to a hit at this breakpoint location.

Side Effects: This may evaluate the breakpoint condition, and run the callback. So this command may do a considerable amount of work.

Returns
true if this breakpoint location thinks we should stop, false otherwise.

Definition at line 380 of file BreakpointLocation.cpp.

References lldb_private::Breakpoints, lldb::eDescriptionLevelVerbose, lldb_private::StreamString::GetData(), GetDescription(), lldb_private::GetLog(), InvokeCallback(), lldb_private::StoppointCallbackContext::is_synchronous, IsEnabled(), and LLDB_LOGF.

◆ SwapLocation()

void BreakpointLocation::SwapLocation ( lldb::BreakpointLocationSP swap_from)
private

◆ UndoBumpHitCount()

void BreakpointLocation::UndoBumpHitCount ( )
private

Definition at line 411 of file BreakpointLocation.cpp.

References IsEnabled(), m_hit_counter, and m_owner.

◆ ValidForThisThread()

bool BreakpointLocation::ValidForThisThread ( Thread & thread)

◆ BreakpointLocationList

friend class BreakpointLocationList
friend

Definition at line 296 of file BreakpointLocation.h.

References BreakpointLocationList.

Referenced by BreakpointLocationList.

◆ BreakpointSite

friend class BreakpointSite
friend

Definition at line 295 of file BreakpointLocation.h.

References BreakpointSite.

Referenced by BreakpointSite.

◆ Process

friend class Process
friend

Definition at line 297 of file BreakpointLocation.h.

References Process.

Referenced by Process, and ResolveBreakpointSite().

◆ StopInfoBreakpoint

friend class StopInfoBreakpoint
friend

Definition at line 298 of file BreakpointLocation.h.

References StopInfoBreakpoint.

Referenced by StopInfoBreakpoint.

Member Data Documentation

◆ m_address

Address lldb_private::BreakpointLocation::m_address
private

◆ m_bp_site_sp

lldb::BreakpointSiteSP lldb_private::BreakpointLocation::m_bp_site_sp
private

Our breakpoint site (it may be shared by more than one location.)

Definition at line 376 of file BreakpointLocation.h.

Referenced by ClearBreakpointSite(), Dump(), GetBreakpointSite(), GetDescription(), IsResolved(), ResolveBreakpointSite(), and SetBreakpointSite().

◆ m_condition_hash

size_t lldb_private::BreakpointLocation::m_condition_hash
private

For testing whether the condition source code changed.

Definition at line 383 of file BreakpointLocation.h.

Referenced by ConditionSaysStop().

◆ m_condition_mutex

std::mutex lldb_private::BreakpointLocation::m_condition_mutex
private

Guards parsing and evaluation of the condition, which could be evaluated by multiple processes.

Definition at line 380 of file BreakpointLocation.h.

Referenced by ConditionSaysStop().

◆ m_hit_counter

StoppointHitCounter lldb_private::BreakpointLocation::m_hit_counter
private

Number of times this breakpoint location has been hit.

Definition at line 386 of file BreakpointLocation.h.

Referenced by BumpHitCount(), GetHitCount(), ResetHitCount(), and UndoBumpHitCount().

◆ m_is_indirect

bool lldb_private::BreakpointLocation::m_is_indirect
private

Definition at line 369 of file BreakpointLocation.h.

Referenced by IsIndirect(), SetIsIndirect(), and SwapLocation().

◆ m_is_reexported

bool lldb_private::BreakpointLocation::m_is_reexported
private

Definition at line 368 of file BreakpointLocation.h.

Referenced by IsReExported(), SetIsReExported(), and SwapLocation().

◆ m_loc_id

lldb::break_id_t lldb_private::BreakpointLocation::m_loc_id
private

Breakpoint location ID.

Definition at line 385 of file BreakpointLocation.h.

Referenced by GetID().

◆ m_options_up

std::unique_ptr<BreakpointOptions> lldb_private::BreakpointLocation::m_options_up
private

◆ m_owner

◆ m_preferred_line_entry

std::optional<LineEntry> lldb_private::BreakpointLocation::m_preferred_line_entry
private

If this exists, use it to print the stop description rather than the LineEntry m_address resolves to directly.

Use this for instance when the location was given somewhere in the virtual inlined call stack since the Address always resolves to the lowest entry in the stack.

Definition at line 392 of file BreakpointLocation.h.

Referenced by GetPreferredLineEntry(), and SetPreferredLineEntry().

◆ m_should_resolve_indirect_functions

bool lldb_private::BreakpointLocation::m_should_resolve_indirect_functions
private

◆ m_user_expression_sp

lldb::UserExpressionSP lldb_private::BreakpointLocation::m_user_expression_sp
private

The compiled expression to use in testing our condition.

Definition at line 378 of file BreakpointLocation.h.

Referenced by ConditionSaysStop(), and SwapLocation().


The documentation for this class was generated from the following files: