LLDB
mainline
|
#include <Watchpoint.h>
Classes | |
class | WatchpointEventData |
Public Member Functions | |
Watchpoint (Target &target, lldb::addr_t addr, uint32_t size, const CompilerType *type, bool hardware=true) | |
~Watchpoint () override | |
void | IncrementFalseAlarmsAndReviseHitCount () |
bool | IsEnabled () const |
void | SetEnabled (bool enabled, bool notify=true) |
bool | IsHardware () const override |
bool | ShouldStop (StoppointCallbackContext *context) override |
bool | WatchpointRead () const |
bool | WatchpointWrite () const |
uint32_t | GetIgnoreCount () const |
void | SetIgnoreCount (uint32_t n) |
void | SetWatchpointType (uint32_t type, bool notify=true) |
void | SetDeclInfo (const std::string &str) |
std::string | GetWatchSpec () |
void | SetWatchSpec (const std::string &str) |
bool | IsWatchVariable () const |
void | SetWatchVariable (bool val) |
bool | CaptureWatchedValue (const ExecutionContext &exe_ctx) |
void | GetDescription (Stream *s, lldb::DescriptionLevel level) |
void | Dump (Stream *s) const override |
void | DumpSnapshots (Stream *s, const char *prefix=nullptr) const |
void | DumpWithLevel (Stream *s, lldb::DescriptionLevel description_level) const |
Target & | GetTarget () |
const Status & | GetError () |
WatchpointOptions * | GetOptions () |
Returns the WatchpointOptions structure set for this watchpoint. More... | |
void | SetCallback (WatchpointHitCallback callback, void *callback_baton, bool is_synchronous=false) |
Set the callback action invoked when the watchpoint is hit. More... | |
void | SetCallback (WatchpointHitCallback callback, const lldb::BatonSP &callback_baton_sp, bool is_synchronous=false) |
void | ClearCallback () |
bool | InvokeCallback (StoppointCallbackContext *context) |
Invoke the callback action when the watchpoint is hit. More... | |
void | SetCondition (const char *condition) |
Set the watchpoint's condition. More... | |
const char * | GetConditionText () const |
Return a pointer to the text of the condition expression. More... | |
void | TurnOnEphemeralMode () |
void | TurnOffEphemeralMode () |
bool | IsDisabledDuringEphemeralMode () |
const CompilerType & | GetCompilerType () |
![]() | |
StoppointSite (lldb::break_id_t bid, lldb::addr_t m_addr, bool hardware) | |
StoppointSite (lldb::break_id_t bid, lldb::addr_t m_addr, uint32_t byte_size, bool hardware) | |
virtual | ~StoppointSite ()=default |
virtual lldb::addr_t | GetLoadAddress () const |
virtual void | SetLoadAddress (lldb::addr_t addr) |
uint32_t | GetByteSize () const |
uint32_t | GetHitCount () const |
void | ResetHitCount () |
bool | HardwareRequired () const |
uint32_t | GetHardwareIndex () const |
void | SetHardwareIndex (uint32_t index) |
lldb::break_id_t | GetID () const |
Private Member Functions | |
void | ResetHistoricValues () |
void | SetID (lldb::watch_id_t id) |
void | SendWatchpointChangedEvent (lldb::WatchpointEventType eventKind) |
void | SendWatchpointChangedEvent (WatchpointEventData *data) |
Watchpoint (const Watchpoint &)=delete | |
const Watchpoint & | operator= (const Watchpoint &)=delete |
Private Attributes | |
Target & | m_target |
bool | m_enabled |
bool | m_is_hardware |
bool | m_is_watch_variable |
bool | m_is_ephemeral |
uint32_t | m_disabled_count |
uint32_t | m_watch_read: 1 |
uint32_t | m_watch_write: 1 |
uint32_t | m_watch_was_read: 1 |
uint32_t | m_watch_was_written: 1 |
uint32_t | m_ignore_count |
uint32_t | m_false_alarms |
std::string | m_decl_str |
std::string | m_watch_spec_str |
lldb::ValueObjectSP | m_old_value_sp |
lldb::ValueObjectSP | m_new_value_sp |
CompilerType | m_type |
Status | m_error |
WatchpointOptions | m_options |
bool | m_being_created |
std::unique_ptr< UserExpression > | m_condition_up |
Friends | |
class | Target |
class | WatchpointList |
Additional Inherited Members | |
![]() | |
lldb::break_id_t | m_id |
Stoppoint site ID. More... | |
lldb::addr_t | m_addr |
The load address of this stop point. More... | |
bool | m_is_hardware_required |
True if this point is required to use hardware (which may fail due to the lack of resources). More... | |
uint32_t | m_hardware_index |
The hardware resource index for this breakpoint/watchpoint. More... | |
uint32_t | m_byte_size |
The size in bytes of stoppoint, e.g. More... | |
StoppointHitCounter | m_hit_counter |
Number of times this breakpoint/watchpoint has been hit. More... | |
Definition at line 24 of file Watchpoint.h.
Watchpoint::Watchpoint | ( | Target & | target, |
lldb::addr_t | addr, | ||
uint32_t | size, | ||
const CompilerType * | type, | ||
bool | hardware = true |
||
) |
Definition at line 27 of file Watchpoint.cpp.
References CaptureWatchedValue(), lldb::eEncodingUint, lldb::eLanguageTypeC, lldb_private::GetLog(), lldb_private::Target::GetProcessSP(), lldb_private::Target::GetScratchTypeSystemForLanguage(), lldb_private::CompilerType::IsValid(), LLDB_LOG_ERROR, m_being_created, m_target, m_type, and lldb_private::Watchpoints.
|
overridedefault |
|
privatedelete |
bool Watchpoint::CaptureWatchedValue | ( | const ExecutionContext & | exe_ctx | ) |
Definition at line 104 of file Watchpoint.cpp.
References lldb_private::ValueObjectMemory::Create(), lldb_private::ExecutionContext::GetBestExecutionContextScope(), lldb_private::StoppointSite::GetLoadAddress(), lldb_private::ConstString::GetStringRef(), lldb_private::CompilerType::IsValid(), m_new_value_sp, m_old_value_sp, and m_type.
Referenced by Watchpoint().
void Watchpoint::ClearCallback | ( | ) |
Definition at line 82 of file Watchpoint.cpp.
References lldb_private::WatchpointOptions::ClearCallback(), m_options, and SendWatchpointChangedEvent().
Referenced by CommandObjectWatchpointCommandDelete::DoExecute().
|
overridevirtual |
Implements lldb_private::StoppointSite.
Definition at line 149 of file Watchpoint.cpp.
References DumpWithLevel(), and lldb::eDescriptionLevelBrief.
void Watchpoint::DumpSnapshots | ( | Stream * | s, |
const char * | prefix = nullptr |
||
) | const |
Definition at line 155 of file Watchpoint.cpp.
References lldb_private::StoppointSite::GetID(), m_new_value_sp, m_old_value_sp, and lldb_private::Stream::Printf().
Referenced by DumpWithLevel().
void Watchpoint::DumpWithLevel | ( | Stream * | s, |
lldb::DescriptionLevel | description_level | ||
) | const |
Definition at line 184 of file Watchpoint.cpp.
References DumpSnapshots(), lldb::eDescriptionLevelBrief, lldb::eDescriptionLevelFull, lldb::eDescriptionLevelVerbose, lldb_private::WatchpointOptions::GetCallbackDescription(), GetConditionText(), lldb_private::StoppointSite::GetHardwareIndex(), lldb_private::StoppointSite::GetHitCount(), lldb_private::StoppointSite::GetID(), GetIgnoreCount(), lldb_private::StoppointSite::GetLoadAddress(), IsEnabled(), lldb_private::StoppointSite::m_byte_size, m_decl_str, m_options, m_watch_read, m_watch_spec_str, m_watch_write, and lldb_private::Stream::Printf().
Referenced by Dump(), and GetDescription().
|
inline |
Definition at line 155 of file Watchpoint.h.
References m_type.
const char * Watchpoint::GetConditionText | ( | ) | const |
Return a pointer to the text of the condition expression.
Definition at line 301 of file Watchpoint.cpp.
References m_condition_up.
Referenced by DumpWithLevel().
void Watchpoint::GetDescription | ( | Stream * | s, |
lldb::DescriptionLevel | level | ||
) |
Definition at line 145 of file Watchpoint.cpp.
References DumpWithLevel().
Referenced by AddWatchpointDescription().
|
inline |
Definition at line 98 of file Watchpoint.h.
References m_error.
uint32_t Watchpoint::GetIgnoreCount | ( | ) | const |
Definition at line 269 of file Watchpoint.cpp.
References m_ignore_count.
Referenced by DumpWithLevel().
|
inline |
Returns the WatchpointOptions structure set for this watchpoint.
Definition at line 104 of file Watchpoint.h.
References m_options.
Referenced by CommandObjectWatchpointCommandList::DoExecute().
|
inline |
Definition at line 97 of file Watchpoint.h.
References m_target.
Referenced by SendWatchpointChangedEvent().
std::string Watchpoint::GetWatchSpec | ( | ) |
Definition at line 89 of file Watchpoint.cpp.
References m_watch_spec_str.
void Watchpoint::IncrementFalseAlarmsAndReviseHitCount | ( | ) |
Definition at line 123 of file Watchpoint.cpp.
References lldb_private::StoppointHitCounter::Decrement(), lldb_private::StoppointHitCounter::GetValue(), m_false_alarms, lldb_private::StoppointSite::m_hit_counter, and lldb_private::StoppointHitCounter::Reset().
bool Watchpoint::InvokeCallback | ( | StoppointCallbackContext * | context | ) |
Invoke the callback action when the watchpoint is hit.
[in] | context | Described the watchpoint event. |
Definition at line 278 of file Watchpoint.cpp.
References lldb_private::StoppointSite::GetID(), lldb_private::WatchpointOptions::InvokeCallback(), and m_options.
bool Watchpoint::IsDisabledDuringEphemeralMode | ( | ) |
Definition at line 233 of file Watchpoint.cpp.
References m_disabled_count, and m_is_ephemeral.
bool Watchpoint::IsEnabled | ( | ) | const |
Definition at line 218 of file Watchpoint.cpp.
References m_enabled.
Referenced by lldb_private::ProcessWindows::DisableWatchpoint(), lldb_private::process_gdb_remote::ProcessGDBRemote::DisableWatchpoint(), DumpWithLevel(), lldb_private::ProcessWindows::EnableWatchpoint(), lldb_private::process_gdb_remote::ProcessGDBRemote::EnableWatchpoint(), and ShouldStop().
|
overridevirtual |
Implements lldb_private::StoppointSite.
Definition at line 95 of file Watchpoint.cpp.
References lldb_private::StoppointSite::HardwareRequired(), lldbassert, and m_is_hardware.
Referenced by lldb_private::process_gdb_remote::ProcessGDBRemote::DisableWatchpoint().
bool Watchpoint::IsWatchVariable | ( | ) | const |
Definition at line 100 of file Watchpoint.cpp.
References m_is_watch_variable.
|
privatedelete |
|
inlineprivate |
Definition at line 161 of file Watchpoint.h.
References m_new_value_sp, and m_old_value_sp.
|
private |
Definition at line 308 of file Watchpoint.cpp.
References lldb_private::Broadcaster::BroadcastEvent(), lldb_private::Target::eBroadcastBitWatchpointChanged, GetTarget(), and m_being_created.
Referenced by ClearCallback(), SetCallback(), SetCondition(), SetEnabled(), SetIgnoreCount(), and SetWatchpointType().
|
private |
Definition at line 319 of file Watchpoint.cpp.
References lldb_private::Broadcaster::BroadcastEvent(), lldb_private::Target::eBroadcastBitWatchpointChanged, GetTarget(), and m_being_created.
void lldb_private::Watchpoint::SetCallback | ( | WatchpointHitCallback | callback, |
const lldb::BatonSP & | callback_baton_sp, | ||
bool | is_synchronous = false |
||
) |
void Watchpoint::SetCallback | ( | WatchpointHitCallback | callback, |
void * | callback_baton, | ||
bool | is_synchronous = false |
||
) |
Set the callback action invoked when the watchpoint is hit.
[in] | callback | The method that will get called when the watchpoint is hit. |
[in] | callback_baton | A void * pointer that will get passed back to the callback function. |
[in] | is_synchronous | If true the callback will be run on the private event thread before the stop event gets reported. If false, the callback will get handled on the public event thread after the stop has been posted. |
Definition at line 63 of file Watchpoint.cpp.
References m_options, SendWatchpointChangedEvent(), and lldb_private::WatchpointOptions::SetCallback().
void Watchpoint::SetCondition | ( | const char * | condition | ) |
Set the watchpoint's condition.
[in] | condition | The condition expression to evaluate when the watchpoint is hit. Pass in nullptr to clear the condition. |
Definition at line 282 of file Watchpoint.cpp.
References lldb::eLanguageTypeUnknown, lldb_private::Expression::eResultTypeAny, error(), lldb_private::Target::GetUserExpressionForLanguage(), m_condition_up, m_target, and SendWatchpointChangedEvent().
void Watchpoint::SetDeclInfo | ( | const std::string & | str | ) |
Definition at line 87 of file Watchpoint.cpp.
References m_decl_str.
void Watchpoint::SetEnabled | ( | bool | enabled, |
bool | notify = true |
||
) |
Definition at line 237 of file Watchpoint.cpp.
References LLDB_INVALID_INDEX32, m_disabled_count, m_enabled, m_is_ephemeral, SendWatchpointChangedEvent(), and lldb_private::StoppointSite::SetHardwareIndex().
Referenced by lldb_private::ProcessWindows::DisableWatchpoint(), lldb_private::process_gdb_remote::ProcessGDBRemote::DisableWatchpoint(), lldb_private::ProcessWindows::EnableWatchpoint(), and lldb_private::process_gdb_remote::ProcessGDBRemote::EnableWatchpoint().
|
inlineprivate |
Definition at line 200 of file Watchpoint.h.
References lldb_private::StoppointSite::m_id.
void Watchpoint::SetIgnoreCount | ( | uint32_t | n | ) |
Definition at line 271 of file Watchpoint.cpp.
References m_ignore_count, and SendWatchpointChangedEvent().
void Watchpoint::SetWatchpointType | ( | uint32_t | type, |
bool | notify = true |
||
) |
Definition at line 255 of file Watchpoint.cpp.
References LLDB_WATCH_TYPE_READ, LLDB_WATCH_TYPE_WRITE, m_watch_read, m_watch_write, and SendWatchpointChangedEvent().
void Watchpoint::SetWatchSpec | ( | const std::string & | str | ) |
Definition at line 91 of file Watchpoint.cpp.
References m_watch_spec_str.
void Watchpoint::SetWatchVariable | ( | bool | val | ) |
Definition at line 102 of file Watchpoint.cpp.
References m_is_watch_variable.
|
overridevirtual |
Implements lldb_private::StoppointSite.
Definition at line 139 of file Watchpoint.cpp.
References lldb_private::StoppointHitCounter::Increment(), IsEnabled(), and lldb_private::StoppointSite::m_hit_counter.
void Watchpoint::TurnOffEphemeralMode | ( | ) |
Definition at line 227 of file Watchpoint.cpp.
References m_disabled_count, and m_is_ephemeral.
void Watchpoint::TurnOnEphemeralMode | ( | ) |
Definition at line 225 of file Watchpoint.cpp.
References m_is_ephemeral.
bool Watchpoint::WatchpointRead | ( | ) | const |
Definition at line 265 of file Watchpoint.cpp.
References m_watch_read.
Referenced by lldb_private::ProcessWindows::EnableWatchpoint(), and GetGDBStoppointType().
bool Watchpoint::WatchpointWrite | ( | ) | const |
Definition at line 267 of file Watchpoint.cpp.
References m_watch_write.
Referenced by lldb_private::ProcessWindows::EnableWatchpoint(), and GetGDBStoppointType().
|
friend |
Definition at line 158 of file Watchpoint.h.
|
friend |
Definition at line 159 of file Watchpoint.h.
|
private |
Definition at line 196 of file Watchpoint.h.
Referenced by SendWatchpointChangedEvent(), and Watchpoint().
|
private |
Definition at line 198 of file Watchpoint.h.
Referenced by GetConditionText(), and SetCondition().
|
private |
Definition at line 186 of file Watchpoint.h.
Referenced by DumpWithLevel(), and SetDeclInfo().
|
private |
Definition at line 174 of file Watchpoint.h.
Referenced by IsDisabledDuringEphemeralMode(), SetEnabled(), and TurnOffEphemeralMode().
|
private |
Definition at line 167 of file Watchpoint.h.
Referenced by IsEnabled(), and SetEnabled().
|
private |
Definition at line 191 of file Watchpoint.h.
Referenced by GetError().
|
private |
Definition at line 185 of file Watchpoint.h.
Referenced by IncrementFalseAlarmsAndReviseHitCount().
|
private |
Definition at line 184 of file Watchpoint.h.
Referenced by GetIgnoreCount(), and SetIgnoreCount().
|
private |
Definition at line 170 of file Watchpoint.h.
Referenced by IsDisabledDuringEphemeralMode(), SetEnabled(), TurnOffEphemeralMode(), and TurnOnEphemeralMode().
|
private |
Definition at line 168 of file Watchpoint.h.
Referenced by IsHardware().
|
private |
Definition at line 169 of file Watchpoint.h.
Referenced by IsWatchVariable(), and SetWatchVariable().
|
private |
Definition at line 189 of file Watchpoint.h.
Referenced by CaptureWatchedValue(), DumpSnapshots(), and ResetHistoricValues().
|
private |
Definition at line 188 of file Watchpoint.h.
Referenced by CaptureWatchedValue(), DumpSnapshots(), and ResetHistoricValues().
|
private |
Definition at line 194 of file Watchpoint.h.
Referenced by ClearCallback(), DumpWithLevel(), GetOptions(), InvokeCallback(), and SetCallback().
|
private |
Definition at line 166 of file Watchpoint.h.
Referenced by GetTarget(), SetCondition(), and Watchpoint().
|
private |
Definition at line 190 of file Watchpoint.h.
Referenced by CaptureWatchedValue(), GetCompilerType(), and Watchpoint().
|
private |
Definition at line 179 of file Watchpoint.h.
Referenced by DumpWithLevel(), SetWatchpointType(), and WatchpointRead().
|
private |
Definition at line 187 of file Watchpoint.h.
Referenced by DumpWithLevel(), GetWatchSpec(), and SetWatchSpec().
|
private |
Definition at line 181 of file Watchpoint.h.
|
private |
Definition at line 182 of file Watchpoint.h.
|
private |
Definition at line 180 of file Watchpoint.h.
Referenced by DumpWithLevel(), SetWatchpointType(), and WatchpointWrite().