When I hit a breakpoint on Windows, I'm doing something like this:
BreakpointSiteSP site(GetBreakpointSiteList().FindByAddress(pc));
lldb::break_id_t break_id = LLDB_INVALID_BREAK_ID;
bool should_stop = true;
if (site)
{
should_stop = site->ValidForThisThread(stop_thread.get());
break_id = site->GetID();
}
stop_info =
StopInfo::CreateStopReasonWithBreakpointSiteID(*stop_thread, break_id,
should_stop);
stop_thread->SetStopInfo(stop_info);
When should_stop is true (which for now is basically always), this results
in the breakpoint's hit count not increasing. It seems this is because
specifying a value for should_stop leads to m_should_stop_is_valid being
initialized to true. But in StopInfoBreakpoint::ShouldStopSynchronous(),
we only bump the hit count if m_should_stop_is_valid is false.
I can fix this bug by using
StopInfo::CreateStopReasonWithBreakpointSiteID(*stop_thread, break_id);
instead, and since m_stop_info_is_valid is false, and it bumps the hit
count later. But I'm not sure if this is the right thing to do, or if the
behavior I'm seeing with specifying a value for should_stop on creation and
the hit count not going up is a bug.
Can anyone explain this?
_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev