diff --git a/lldb/include/lldb/Core/SourceManager.h b/lldb/include/lldb/Core/SourceManager.h index 721b97e1d5e4..0705b5f7a5c2 100644 --- a/lldb/include/lldb/Core/SourceManager.h +++ b/lldb/include/lldb/Core/SourceManager.h @@ -47,6 +47,12 @@ public: bool FileSpecMatches (const FileSpec &file_spec); + const FileSpec & + GetFileSpec () + { + return m_file_spec; + } + protected: bool @@ -73,6 +79,12 @@ public: FileSP GetFile (const FileSpec &file_spec); + FileSP + GetLastFile () + { + return m_last_file_sp; + } + size_t DisplaySourceLines (const FileSpec &file, uint32_t line, diff --git a/lldb/source/Commands/CommandObjectSource.cpp b/lldb/source/Commands/CommandObjectSource.cpp index 2e4645eb0fd8..40d35e5ef10a 100644 --- a/lldb/source/Commands/CommandObjectSource.cpp +++ b/lldb/source/Commands/CommandObjectSource.cpp @@ -417,13 +417,25 @@ public: char path_buf[PATH_MAX]; start_file.GetPath(path_buf, sizeof(path_buf)); + + if (m_options.show_bp_locs && exe_ctx.target) + { + const bool show_inlines = true; + m_breakpoint_locations.Reset (start_file, 0, show_inlines); + SearchFilter target_search_filter (exe_ctx.target->GetSP()); + target_search_filter.Search (m_breakpoint_locations); + } + else + m_breakpoint_locations.Clear(); + result.AppendMessageWithFormat("File: %s.\n", path_buf); m_interpreter.GetDebugger().GetSourceManager().DisplaySourceLinesWithLineNumbers (start_file, line_no, 0, m_options.num_lines, "", - &result.GetOutputStream()); + &result.GetOutputStream(), + GetBreakpointLocations ()); result.SetStatus (eReturnStatusSuccessFinishResult); return true; @@ -445,6 +457,20 @@ public: } else { + if (m_options.show_bp_locs && exe_ctx.target) + { + SourceManager::FileSP last_file_sp (m_interpreter.GetDebugger().GetSourceManager().GetLastFile ()); + if (last_file_sp) + { + const bool show_inlines = true; + m_breakpoint_locations.Reset (last_file_sp->GetFileSpec(), 0, show_inlines); + SearchFilter target_search_filter (exe_ctx.target->GetSP()); + target_search_filter.Search (m_breakpoint_locations); + } + } + else + m_breakpoint_locations.Clear(); + if (m_interpreter.GetDebugger().GetSourceManager().DisplaySourceLinesWithLineNumbersUsingLastFile( m_options.start_line, // Line to display 0, // Lines before line to display