@@ -837,15 +837,17 @@ Status MinidumpFileBuilder::AddMemoryList() {
837837 error = m_process_sp->CalculateCoreFileSaveRanges (m_save_core_options,
838838 all_core_memory_ranges);
839839
840+ if (error.Fail ())
841+ return error;
842+
843+ lldb_private::Progress progress (" Saving Minidump File" , " " ,
844+ all_core_memory_ranges.GetSize ());
840845 std::vector<CoreFileMemoryRange> all_core_memory_vec;
841846 // Extract all the data into just a vector of data. So we can mutate this in
842847 // place.
843848 for (const auto &core_range : all_core_memory_ranges)
844849 all_core_memory_vec.push_back (core_range.data );
845850
846- if (error.Fail ())
847- return error;
848-
849851 // Start by saving all of the stacks and ensuring they fit under the 32b
850852 // limit.
851853 uint64_t total_size = GetCurrentDataEndOffset ();
@@ -892,13 +894,13 @@ Status MinidumpFileBuilder::AddMemoryList() {
892894 }
893895 }
894896
895- error = AddMemoryList_32 (ranges_32);
897+ error = AddMemoryList_32 (ranges_32, progress );
896898 if (error.Fail ())
897899 return error;
898900
899901 // Add the remaining memory as a 64b range.
900902 if (!ranges_64.empty ()) {
901- error = AddMemoryList_64 (ranges_64);
903+ error = AddMemoryList_64 (ranges_64, progress );
902904 if (error.Fail ())
903905 return error;
904906 }
@@ -972,8 +974,9 @@ GetLargestRangeSize(const std::vector<CoreFileMemoryRange> &ranges) {
972974 return max_size;
973975}
974976
975- Status MinidumpFileBuilder::AddMemoryList_32 (
976- std::vector<CoreFileMemoryRange> &ranges) {
977+ Status
978+ MinidumpFileBuilder::AddMemoryList_32 (std::vector<CoreFileMemoryRange> &ranges,
979+ Progress &progress) {
977980 std::vector<MemoryDescriptor> descriptors;
978981 Status error;
979982 if (ranges.size () == 0 )
@@ -996,6 +999,7 @@ Status MinidumpFileBuilder::AddMemoryList_32(
996999 region_index, ranges.size (), size, addr, addr + size);
9971000 ++region_index;
9981001
1002+ progress.Increment (1 , " Adding Memory Range " + core_range.Dump ());
9991003 const size_t bytes_read =
10001004 m_process_sp->ReadMemory (addr, data_up->GetBytes (), size, error);
10011005 if (error.Fail () || bytes_read == 0 ) {
@@ -1049,8 +1053,9 @@ Status MinidumpFileBuilder::AddMemoryList_32(
10491053 return error;
10501054}
10511055
1052- Status MinidumpFileBuilder::AddMemoryList_64 (
1053- std::vector<CoreFileMemoryRange> &ranges) {
1056+ Status
1057+ MinidumpFileBuilder::AddMemoryList_64 (std::vector<CoreFileMemoryRange> &ranges,
1058+ Progress &progress) {
10541059 Status error;
10551060 if (ranges.empty ())
10561061 return error;
@@ -1111,6 +1116,7 @@ Status MinidumpFileBuilder::AddMemoryList_64(
11111116 region_index, ranges.size (), size, addr, addr + size);
11121117 ++region_index;
11131118
1119+ progress.Increment (1 , " Adding Memory Range " + core_range.Dump ());
11141120 const size_t bytes_read =
11151121 m_process_sp->ReadMemory (addr, data_up->GetBytes (), size, error);
11161122 if (error.Fail ()) {
0 commit comments