[Lldb-commits] [lldb] Make breakpoint stop reason more accurate for function breakpoints (PR #130841)
Jacob Lalonde via lldb-commits
lldb-commits at lists.llvm.org
Fri Mar 14 10:19:44 PDT 2025
================
@@ -392,9 +391,59 @@ struct DAP {
void SetThreadFormat(llvm::StringRef format);
- InstructionBreakpoint *GetInstructionBreakpoint(const lldb::break_id_t bp_id);
+ template <typename BreakpointType>
+ BreakpointType *GetBreakpointFromStopReason(lldb::SBThread &thread) {
+ // Check to see if have hit the <BreakpointType> breakpoint and change the
+ // reason accordingly, but only do so if all breakpoints that were
+ // hit are of <BreakpointType>.
+ const auto num = thread.GetStopReasonDataCount();
+ BreakpointType *bp = nullptr;
+ for (size_t i = 0; i < num; i += 2) {
+ lldb::break_id_t bp_id = thread.GetStopReasonDataAtIndex(i);
+ // If any breakpoint is not the <BreakpointType>, then stop and
+ // report this as a normal breakpoint
+ bp = GetBreakpoint<BreakpointType>(bp_id);
+ if (bp == nullptr)
+ return nullptr;
+ }
+ return bp;
+ }
+
+ template <typename BreakpointType>
+ BreakpointType *GetBreakpoint(const lldb::break_id_t bp_id);
+
+ template <>
+ FunctionBreakpoint *
+ GetBreakpoint<FunctionBreakpoint>(const lldb::break_id_t bp_id) {
+ for (auto &bp : function_breakpoints) {
----------------
Jlalond wrote:
Also, @satyajanga does the underlying collection support `find()`? Can we call that instead of enumerating ourselves
https://github.com/llvm/llvm-project/pull/130841
More information about the lldb-commits
mailing list