LLDB mainline
|
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>
Public Member Functions | |
~BreakpointLocation () | |
lldb::addr_t | GetLoadAddress () const |
Gets the load address for this breakpoint location. | |
Address & | GetAddress () |
Gets the Address for this breakpoint location. | |
Breakpoint & | GetBreakpoint () |
Gets the Breakpoint that created this breakpoint location. | |
Target & | GetTarget () |
bool | ShouldStop (StoppointCallbackContext *context) |
Determines whether we should stop due to a hit at this breakpoint location. | |
void | 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 (const char *condition) |
Set the breakpoint location's condition. | |
const char * | GetConditionText (size_t *hash=nullptr) const |
Return a pointer to the text of the condition expression. | |
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 |
bool | ResolveBreakpointSite () |
Try to resolve the breakpoint site for this location. | |
bool | 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. | |
BreakpointOptions & | GetLocationOptions () |
Use this to set location specific breakpoint options. | |
const BreakpointOptions & | GetOptionsSpecifyingKind (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< LineEntry > | GetPreferredLineEntry () |
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 hardware, bool check_for_resolver=true) | |
Constructor. | |
void | SetShouldResolveIndirectFunctions (bool do_resolve) |
void | SendBreakpointLocationChangedEvent (lldb::BreakpointEventType eventKind) |
BreakpointLocation (const BreakpointLocation &)=delete | |
const BreakpointLocation & | operator= (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. | |
Breakpoint & | m_owner |
The breakpoint that produced this object. | |
std::unique_ptr< BreakpointOptions > | m_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< LineEntry > | m_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 |
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.
BreakpointLocation::~BreakpointLocation | ( | ) |
Definition at line 48 of file BreakpointLocation.cpp.
References ClearBreakpointSite().
|
private |
Constructor.
[in] | owner | A back pointer to the breakpoint that owns this location. |
[in] | addr | The Address defining this location. |
[in] | tid | The thread for which this breakpoint location is valid, or LLDB_INVALID_THREAD_ID if it is valid for all threads. |
[in] | hardware | true if a hardware breakpoint is requested. |
|
privatedelete |
|
private |
Definition at line 412 of file BreakpointLocation.cpp.
References lldb_private::StoppointHitCounter::Increment(), IsEnabled(), lldb_private::Breakpoint::m_hit_counter, m_hit_counter, and m_owner.
bool BreakpointLocation::ClearBreakpointSite | ( | ) |
Clear this breakpoint location's breakpoint site - for instance when disabling the breakpoint.
Definition at line 463 of file BreakpointLocation.cpp.
References GetBreakpoint(), GetID(), lldb_private::Target::GetProcessSP(), lldb_private::Breakpoint::GetTarget(), m_bp_site_sp, and m_owner.
Referenced by SetEnabled(), and ~BreakpointLocation().
void BreakpointLocation::ClearCallback | ( | ) |
Definition at line 212 of file BreakpointLocation.cpp.
References lldb_private::BreakpointOptions::ClearCallback(), and GetLocationOptions().
bool BreakpointLocation::ConditionSaysStop | ( | ExecutionContext & | exe_ctx, |
Status & | error | ||
) |
Definition at line 226 of file BreakpointLocation.cpp.
References lldb_private::Breakpoints, lldb_private::Address::CalculateSymbolContextCompileUnit(), lldb_private::DiagnosticManager::Clear(), lldb_private::eExecutionPolicyOnlyWhenNeeded, lldb::eExpressionCompleted, lldb::eExpressionParseError, lldb::eLanguageTypeUnknown, lldb_private::Expression::eResultTypeAny, error(), lldb_private::Status::FromError(), lldb_private::Status::FromErrorString(), lldb_private::DiagnosticManager::GetAsError(), GetConditionText(), lldb_private::CompileUnit::GetLanguage(), lldb_private::GetLog(), GetTarget(), LLDB_LOGF, m_address, m_condition_hash, m_condition_mutex, m_user_expression_sp, lldb_private::EvaluateExpressionOptions::SetIgnoreBreakpoints(), lldb_private::EvaluateExpressionOptions::SetSuppressPersistentResult(), lldb_private::EvaluateExpressionOptions::SetTryAllThreads(), and lldb_private::EvaluateExpressionOptions::SetUnwindOnError().
|
protected |
Definition at line 345 of file BreakpointLocation.cpp.
References m_options_up.
Referenced by IgnoreCountShouldStop().
void BreakpointLocation::Dump | ( | Stream * | s | ) | const |
Standard "Dump" method. At present it does nothing.
Definition at line 639 of file BreakpointLocation.cpp.
References lldb_private::BreakpointOptions::eIgnoreCount, lldb_private::BreakpointOptions::eThreadSpec, GetHitCount(), GetID(), GetIgnoreCount(), lldb_private::Address::GetOpcodeLoadAddress(), GetOptionsSpecifyingKind(), lldb_private::Breakpoint::GetTarget(), lldb_private::BreakpointOptions::GetThreadSpecNoCreate(), lldb_private::ThreadSpec::GetTID(), lldb_private::Breakpoint::IsEnabled(), IsResolved(), m_address, m_bp_site_sp, m_options_up, m_owner, and lldb_private::Stream::Printf().
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.
[in] | location | The location to compare against. |
Address & BreakpointLocation::GetAddress | ( | ) |
Gets the Address for this breakpoint location.
Definition at line 62 of file BreakpointLocation.cpp.
References m_address.
Referenced by lldb_private::BreakpointLocationList::RemoveInvalidLocations().
Breakpoint & BreakpointLocation::GetBreakpoint | ( | ) |
Gets the Breakpoint that created this breakpoint location.
Definition at line 64 of file BreakpointLocation.cpp.
References m_owner.
Referenced by ClearBreakpointSite(), and IgnoreCountShouldStop().
lldb::BreakpointSiteSP BreakpointLocation::GetBreakpointSite | ( | ) | const |
Definition at line 432 of file BreakpointLocation.cpp.
References m_bp_site_sp.
const char * BreakpointLocation::GetConditionText | ( | size_t * | hash = nullptr | ) | const |
Return a pointer to the text of the condition expression.
Definition at line 221 of file BreakpointLocation.cpp.
References lldb_private::BreakpointOptions::eCondition, lldb_private::BreakpointOptions::GetConditionText(), and GetOptionsSpecifyingKind().
Referenced by ConditionSaysStop().
void BreakpointLocation::GetDescription | ( | Stream * | s, |
lldb::DescriptionLevel | level | ||
) |
Print a description of this breakpoint location to the stream s.
[in] | s | The stream to which to print the description. |
[in] | level | The description level that indicates the detail level to provide. |
Definition at line 481 of file BreakpointLocation.cpp.
References lldb_private::ConstString::AsCString(), lldb_private::Stream::AsRawOstream(), lldb_private::Address::CalculateSymbolContext(), lldb_private::Address::CalculateSymbolContextSymbol(), lldb_private::SymbolContext::comp_unit, lldb_private::ConstString::Dump(), lldb_private::Address::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::Stoppoint::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::Breakpoint::GetTarget(), lldb_private::Stream::Indent(), lldb_private::Stream::IndentLess(), lldb_private::Stream::IndentMore(), IsIndirect(), IsReExported(), IsResolved(), lldb_private::Address::IsSectionOffset(), 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().
|
inline |
Return the current Hit Count.
Definition at line 90 of file BreakpointLocation.h.
References lldb_private::StoppointHitCounter::GetValue(), and m_hit_counter.
Referenced by Dump(), and GetDescription().
|
inline |
Returns the breakpoint location ID.
Definition at line 285 of file BreakpointLocation.h.
References m_loc_id.
Referenced by ClearBreakpointSite(), Dump(), lldb_private::BreakpointIDList::FindAndReplaceIDRanges(), GetDescription(), and InvokeCallback().
uint32_t BreakpointLocation::GetIgnoreCount | ( | ) | const |
Return the current Ignore Count.
Definition at line 335 of file BreakpointLocation.cpp.
References lldb_private::BreakpointOptions::eIgnoreCount, lldb_private::BreakpointOptions::GetIgnoreCount(), and GetOptionsSpecifyingKind().
Referenced by Dump().
lldb::addr_t BreakpointLocation::GetLoadAddress | ( | ) | const |
Gets the load address for this breakpoint location.
Definition at line 50 of file BreakpointLocation.cpp.
References lldb_private::Address::GetOpcodeLoadAddress(), lldb_private::Breakpoint::GetTarget(), m_address, and m_owner.
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
Definition at line 368 of file BreakpointLocation.cpp.
References m_options_up.
Referenced by ClearCallback(), CommandObjectBreakpointModify::DoExecute(), SetAutoContinue(), SetCallback(), SetCondition(), SetEnabled(), SetIgnoreCount(), SetQueueName(), SetThreadIDInternal(), SetThreadIndex(), and SetThreadName().
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.
[in] | kind | The particular option you are looking up. |
Definition at line 54 of file BreakpointLocation.cpp.
References lldb_private::Breakpoint::GetOptions(), m_options_up, and m_owner.
Referenced by Dump(), GetConditionText(), GetIgnoreCount(), GetQueueName(), GetThreadID(), GetThreadIndex(), GetThreadName(), and ValidForThisThread().
|
inline |
Definition at line 302 of file BreakpointLocation.h.
References m_preferred_line_entry.
Referenced by GetDescription(), and GetSuggestedStackFrameIndex().
const char * BreakpointLocation::GetQueueName | ( | ) | const |
Definition at line 172 of file BreakpointLocation.cpp.
References lldb_private::BreakpointOptions::eThreadSpec, GetOptionsSpecifyingKind(), lldb_private::ThreadSpec::GetQueueName(), and lldb_private::BreakpointOptions::GetThreadSpecNoCreate().
|
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 674 of file BreakpointLocation.cpp.
References lldb_private::SymbolContext::block, lldb_private::Address::CalculateSymbolContext(), 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.
Target & BreakpointLocation::GetTarget | ( | ) |
Definition at line 66 of file BreakpointLocation.cpp.
References lldb_private::Breakpoint::GetTarget(), and m_owner.
Referenced by ConditionSaysStop().
lldb::tid_t BreakpointLocation::GetThreadID | ( | ) |
Definition at line 106 of file BreakpointLocation.cpp.
References lldb_private::BreakpointOptions::eThreadSpec, GetOptionsSpecifyingKind(), lldb_private::BreakpointOptions::GetThreadSpecNoCreate(), lldb_private::ThreadSpec::GetTID(), and LLDB_INVALID_THREAD_ID.
uint32_t BreakpointLocation::GetThreadIndex | ( | ) | const |
Definition at line 128 of file BreakpointLocation.cpp.
References lldb_private::BreakpointOptions::eThreadSpec, lldb_private::ThreadSpec::GetIndex(), GetOptionsSpecifyingKind(), and lldb_private::BreakpointOptions::GetThreadSpecNoCreate().
const char * BreakpointLocation::GetThreadName | ( | ) | const |
Definition at line 150 of file BreakpointLocation.cpp.
References lldb_private::BreakpointOptions::eThreadSpec, lldb_private::ThreadSpec::GetName(), GetOptionsSpecifyingKind(), and lldb_private::BreakpointOptions::GetThreadSpecNoCreate().
|
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 353 of file BreakpointLocation.cpp.
References lldb_private::Breakpoint::DecrementIgnoreCount(), DecrementIgnoreCount(), GetBreakpoint(), lldb_private::Breakpoint::GetIgnoreCount(), m_options_up, and m_owner.
bool BreakpointLocation::InvokeCallback | ( | StoppointCallbackContext * | context | ) |
Invoke the callback action when the breakpoint is hit.
Meant to be used by the BreakpointLocation class.
[in] | context | Described the breakpoint event. |
Definition at line 182 of file BreakpointLocation.cpp.
References GetID(), lldb_private::Stoppoint::GetID(), lldb_private::Breakpoint::InvokeCallback(), m_options_up, and m_owner.
Referenced by ShouldStop().
bool BreakpointLocation::IsAutoContinue | ( | ) | const |
Check the AutoContinue state.
Definition at line 88 of file BreakpointLocation.cpp.
References lldb_private::BreakpointOptions::eAutoContinue, lldb_private::Breakpoint::IsAutoContinue(), m_options_up, and m_owner.
bool BreakpointLocation::IsCallbackSynchronous | ( | ) |
Report whether the callback for this location is synchronous or not.
Definition at line 189 of file BreakpointLocation.cpp.
References lldb_private::Breakpoint::GetOptions(), lldb_private::BreakpointOptions::IsCallbackSynchronous(), m_options_up, and m_owner.
bool BreakpointLocation::IsEnabled | ( | ) | const |
Check the Enable/Disable state.
Definition at line 68 of file BreakpointLocation.cpp.
References lldb_private::Breakpoint::IsEnabled(), m_options_up, and m_owner.
Referenced by BumpHitCount(), ShouldStop(), and UndoBumpHitCount().
|
inline |
Returns whether the address set in the breakpoint site for this location was found by resolving an indirect symbol.
Definition at line 260 of file BreakpointLocation.h.
References m_is_indirect.
Referenced by GetDescription().
|
inline |
Returns whether the address set in the breakpoint location was re-routed to the target of a re-exported symbol.
Definition at line 269 of file BreakpointLocation.h.
References m_is_reexported.
Referenced by GetDescription().
bool BreakpointLocation::IsResolved | ( | ) | const |
Return whether this breakpoint location has a breakpoint site.
Definition at line 428 of file BreakpointLocation.cpp.
References m_bp_site_sp.
Referenced by Dump(), GetDescription(), and ResolveBreakpointSite().
|
privatedelete |
|
inline |
Resets the current Hit Count.
Definition at line 93 of file BreakpointLocation.h.
References m_hit_counter, and lldb_private::StoppointHitCounter::Reset().
bool BreakpointLocation::ResolveBreakpointSite | ( | ) |
Try to resolve the breakpoint site for this location.
Definition at line 436 of file BreakpointLocation.cpp.
References lldb_private::Breakpoints, lldb_private::Process::CreateBreakpointSite(), lldb_private::GetLog(), lldb_private::Address::GetOpcodeLoadAddress(), lldb_private::Target::GetProcessSP(), lldb_private::Breakpoint::GetTarget(), lldb_private::Breakpoint::IsHardware(), IsResolved(), LLDB_INVALID_BREAK_ID, m_address, m_bp_site_sp, m_owner, and lldb_private::Log::Warning().
Referenced by SetEnabled().
|
private |
Definition at line 662 of file BreakpointLocation.cpp.
References lldb_private::Broadcaster::BroadcastEvent(), lldb_private::Target::eBroadcastBitBreakpointChanged, lldb_private::Broadcaster::EventTypeHasListeners(), lldb_private::Breakpoint::GetTarget(), lldb_private::Breakpoint::IsInternal(), and m_owner.
Referenced by SetAutoContinue(), SetBreakpointSite(), SetCallback(), SetCondition(), SetEnabled(), SetIgnoreCount(), SetQueueName(), SetThreadID(), SetThreadIndex(), and SetThreadName().
void BreakpointLocation::SetAutoContinue | ( | bool | auto_continue | ) |
If auto_continue is true, set the breakpoint to continue when hit.
Definition at line 96 of file BreakpointLocation.cpp.
References GetLocationOptions(), SendBreakpointLocationChangedEvent(), and lldb_private::BreakpointOptions::SetAutoContinue().
|
protected |
Set the breakpoint site for this location to bp_site_sp.
[in] | bp_site_sp | The breakpoint site we are setting for this location. |
Definition at line 457 of file BreakpointLocation.cpp.
References m_bp_site_sp, and SendBreakpointLocationChangedEvent().
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.
[in] | callback | The method that will get called when the breakpoint is hit. |
[in] | callback_baton_sp | A shared pointer to a Baton that provides the void * needed for the callback. |
Definition at line 205 of file BreakpointLocation.cpp.
References GetLocationOptions(), SendBreakpointLocationChangedEvent(), and lldb_private::BreakpointOptions::SetCallback().
void BreakpointLocation::SetCallback | ( | BreakpointHitCallback | callback, |
void * | baton, | ||
bool | is_synchronous | ||
) |
Definition at line 196 of file BreakpointLocation.cpp.
References GetLocationOptions(), SendBreakpointLocationChangedEvent(), and lldb_private::BreakpointOptions::SetCallback().
void BreakpointLocation::SetCondition | ( | const char * | condition | ) |
Set the breakpoint location's condition.
[in] | condition | The condition expression to evaluate when the breakpoint is hit. |
Definition at line 216 of file BreakpointLocation.cpp.
References GetLocationOptions(), SendBreakpointLocationChangedEvent(), and lldb_private::BreakpointOptions::SetCondition().
void BreakpointLocation::SetEnabled | ( | bool | enabled | ) |
If enabled is true, enable the breakpoint, if false disable it.
Definition at line 77 of file BreakpointLocation.cpp.
References ClearBreakpointSite(), GetLocationOptions(), ResolveBreakpointSite(), SendBreakpointLocationChangedEvent(), and lldb_private::BreakpointOptions::SetEnabled().
Referenced by CommandObjectBreakpointEnable::DoExecute(), and CommandObjectBreakpointDelete::DoExecute().
void BreakpointLocation::SetIgnoreCount | ( | uint32_t | n | ) |
Set the breakpoint to ignore the next count breakpoint hits.
[in] | n | The number of breakpoint hits to ignore. |
Definition at line 340 of file BreakpointLocation.cpp.
References GetLocationOptions(), SendBreakpointLocationChangedEvent(), and lldb_private::BreakpointOptions::SetIgnoreCount().
|
inline |
Definition at line 262 of file BreakpointLocation.h.
References m_is_indirect.
|
inline |
Definition at line 271 of file BreakpointLocation.h.
References m_is_reexported.
|
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 293 of file BreakpointLocation.h.
References lldb_private::AddressRange::GetBaseAddress(), m_address, m_preferred_line_entry, and lldb_private::LineEntry::range.
void BreakpointLocation::SetQueueName | ( | const char * | queue_name | ) |
Definition at line 160 of file BreakpointLocation.cpp.
References GetLocationOptions(), lldb_private::BreakpointOptions::GetThreadSpec(), m_options_up, SendBreakpointLocationChangedEvent(), and lldb_private::ThreadSpec::SetQueueName().
|
inlineprivate |
Definition at line 409 of file BreakpointLocation.h.
References m_should_resolve_indirect_functions.
void BreakpointLocation::SetThreadID | ( | lldb::tid_t | thread_id | ) |
Set the valid thread to be checked when the breakpoint is hit.
[in] | thread_id | If this thread hits the breakpoint, we stop, otherwise not. |
Definition at line 101 of file BreakpointLocation.cpp.
References SendBreakpointLocationChangedEvent(), and SetThreadIDInternal().
|
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.
[in] | thread_id | The new thread ID. |
Definition at line 727 of file BreakpointLocation.cpp.
References GetLocationOptions(), LLDB_INVALID_THREAD_ID, m_options_up, and lldb_private::BreakpointOptions::SetThreadID().
Referenced by SetThreadID().
void BreakpointLocation::SetThreadIndex | ( | uint32_t | index | ) |
Definition at line 116 of file BreakpointLocation.cpp.
References GetLocationOptions(), lldb_private::BreakpointOptions::GetThreadSpec(), m_options_up, SendBreakpointLocationChangedEvent(), and lldb_private::ThreadSpec::SetIndex().
void BreakpointLocation::SetThreadName | ( | const char * | thread_name | ) |
Definition at line 138 of file BreakpointLocation.cpp.
References GetLocationOptions(), lldb_private::BreakpointOptions::GetThreadSpec(), m_options_up, SendBreakpointLocationChangedEvent(), and lldb_private::ThreadSpec::SetName().
|
inline |
Returns whether we should resolve Indirect functions in setting the breakpoint site for this location.
Definition at line 251 of file BreakpointLocation.h.
References m_should_resolve_indirect_functions.
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.
Definition at line 389 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.
|
private |
Definition at line 718 of file BreakpointLocation.cpp.
References m_address, m_is_indirect, m_is_reexported, m_should_resolve_indirect_functions, and m_user_expression_sp.
|
private |
Definition at line 420 of file BreakpointLocation.cpp.
References lldb_private::StoppointHitCounter::Decrement(), IsEnabled(), lldb_private::Breakpoint::m_hit_counter, m_hit_counter, and m_owner.
bool BreakpointLocation::ValidForThisThread | ( | Thread & | thread | ) |
Definition at line 378 of file BreakpointLocation.cpp.
References lldb_private::BreakpointOptions::eThreadSpec, GetOptionsSpecifyingKind(), and lldb_private::Thread::MatchesSpec().
|
friend |
Definition at line 308 of file BreakpointLocation.h.
|
friend |
Definition at line 307 of file BreakpointLocation.h.
|
friend |
Definition at line 309 of file BreakpointLocation.h.
|
friend |
Definition at line 310 of file BreakpointLocation.h.
|
private |
The address defining this location.
Definition at line 385 of file BreakpointLocation.h.
Referenced by ConditionSaysStop(), Dump(), GetAddress(), GetDescription(), GetLoadAddress(), GetSuggestedStackFrameIndex(), ResolveBreakpointSite(), SetPreferredLineEntry(), and SwapLocation().
|
private |
Our breakpoint site (it may be shared by more than one location.)
Definition at line 391 of file BreakpointLocation.h.
Referenced by ClearBreakpointSite(), Dump(), GetBreakpointSite(), GetDescription(), IsResolved(), ResolveBreakpointSite(), and SetBreakpointSite().
|
private |
For testing whether the condition source code changed.
Definition at line 398 of file BreakpointLocation.h.
Referenced by ConditionSaysStop().
|
private |
Guards parsing and evaluation of the condition, which could be evaluated by multiple processes.
Definition at line 395 of file BreakpointLocation.h.
Referenced by ConditionSaysStop().
|
private |
Number of times this breakpoint location has been hit.
Definition at line 401 of file BreakpointLocation.h.
Referenced by BumpHitCount(), GetHitCount(), ResetHitCount(), and UndoBumpHitCount().
|
private |
Definition at line 384 of file BreakpointLocation.h.
Referenced by IsIndirect(), SetIsIndirect(), and SwapLocation().
|
private |
Definition at line 383 of file BreakpointLocation.h.
Referenced by IsReExported(), SetIsReExported(), and SwapLocation().
|
private |
|
private |
Breakpoint options pointer, nullptr if we're using our breakpoint's options.
Definition at line 387 of file BreakpointLocation.h.
Referenced by DecrementIgnoreCount(), Dump(), GetDescription(), GetLocationOptions(), GetOptionsSpecifyingKind(), IgnoreCountShouldStop(), InvokeCallback(), IsAutoContinue(), IsCallbackSynchronous(), IsEnabled(), SetQueueName(), SetThreadIDInternal(), SetThreadIndex(), and SetThreadName().
|
private |
The breakpoint that produced this object.
Definition at line 386 of file BreakpointLocation.h.
Referenced by BumpHitCount(), ClearBreakpointSite(), Dump(), GetBreakpoint(), GetDescription(), GetLoadAddress(), GetOptionsSpecifyingKind(), GetTarget(), IgnoreCountShouldStop(), InvokeCallback(), IsAutoContinue(), IsCallbackSynchronous(), IsEnabled(), ResolveBreakpointSite(), SendBreakpointLocationChangedEvent(), and UndoBumpHitCount().
|
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 407 of file BreakpointLocation.h.
Referenced by GetPreferredLineEntry(), and SetPreferredLineEntry().
|
private |
Definition at line 382 of file BreakpointLocation.h.
Referenced by SetShouldResolveIndirectFunctions(), ShouldResolveIndirectFunctions(), and SwapLocation().
|
private |
The compiled expression to use in testing our condition.
Definition at line 393 of file BreakpointLocation.h.
Referenced by ConditionSaysStop(), and SwapLocation().