jankratochvil added a comment. Just some notes of mine to find out which functions get used in which breakpoint case:
-o 'breakpoint set -f main.c -l 1' -o q -o 'b main.c:1' lldb/source/Commands/CommandObjectBreakpoint.cpp:578 = eSetTypeFileAndLine lldb/source/Target/Target.cpp:330 = GetInlineStrategy() BreakpointSP Target::CreateBreakpoint(const FileSpecList *containingModules, const FileSpec &file, uint32_t line_no, lldb/source/Target/Target.cpp:622 -o 'b main' -o 'breakpoint set -n main -f noFileOfThisName.xxx' containingSourceFiles="noFileOfThisName.xxx" lldb/source/Commands/CommandObjectBreakpoint.cpp:614 = eSetTypeFunctionName lldb/source/Target/Target.cpp:445 Target::CreateBreakpoint(const FileSpecList *containingModules, const FileSpecList *containingSourceFiles, const std::vector<std::string> &func_names, lldb/source/Target/Target.cpp:622 ================ Comment at: lldb/source/Core/SearchFilter.cpp:722 + return false; + } + ---------------- This `IsSourceImplementationFile()` should be checking the filename requested by user, not filename found in DWARF. It should be in `SearchFilterByModuleListAndCU::GetFilterRequiredItems()` where it should check the filename in `m_cu_spec_list`. The whole `GetInlineStrategy()` is there only for performance, if it was fast enough it would be always best to use `eInlineBreakpointsAlways`. So here when you already have fully parsed DIE for the function+type it no longer makes sense to check for any performance optimization possibility. If `eInlineBreakpointsNever` or `eInlineBreakpointsHeaders` shows more breakpoint locations than expected (and still not more than `eInlineBreakpointsAlways`) then it is not a bug but just a missed performance optimization. And after you fully move this `GetInlineStrategy()+IsSourceImplementationFile()` into `SearchFilterByModuleListAndCU::GetFilterRequiredItems()` then you can drop it from `Target::CreateBreakpoint` at `lldb/source/Target/Target.cpp:330` as it no longer has any effect there. IMO one should implement the `DW_AT_decl_file` check also into `SymbolFileDWARF::ResolveSymbolContext` at `lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp`:1977 and other non-DWARF formats. As otherwise properly found candidates can be discarded at the end. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74136/new/ https://reviews.llvm.org/D74136 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits