================ @@ -211,6 +212,35 @@ bool Watchpoint::CaptureWatchedValue(const ExecutionContext &exe_ctx) { return (m_new_value_sp && m_new_value_sp->GetError().Success()); } +bool Watchpoint::WatchedValueReportable(const ExecutionContext &exe_ctx) { + if (!m_watch_modify) + return true; + if (!m_type.IsValid()) + return true; + + ConstString watch_name("$__lldb__watch_value"); + Address watch_address(GetLoadAddress()); + ValueObjectSP newest_valueobj_sp = ValueObjectMemory::Create( + exe_ctx.GetBestExecutionContextScope(), watch_name.GetStringRef(), + watch_address, m_type); + newest_valueobj_sp = newest_valueobj_sp->CreateConstantValue(watch_name); + DataExtractor new_data; + DataExtractor old_data; + Status error; + newest_valueobj_sp->GetData(new_data, error); + m_new_value_sp->GetData(old_data, error); + ---------------- jasonmolenda wrote:
In StopInfoWatchpoint::PerformAction() we decide if we're `m_should_stop` and if so, we call `Watchpoint::CaptureWatchedValue` (one of the things we do before that call is compare the value and decide if we're going to stop or not). CaptureWatchedValue copies the "new" value into the m_old_value_sp and then creates a new constant value object for m_new_value_sp. I copied that same way of creating the const ValueObject in this method; it's the method before this one in Watchpoint.cpp. So the copying of the new value to the previous value is already handled by that code in CaptureWatchedValue. https://github.com/llvm/llvm-project/pull/66308 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits