diff --git a/lldb/source/Core/Debugger.cpp b/lldb/source/Core/Debugger.cpp --- a/lldb/source/Core/Debugger.cpp +++ b/lldb/source/Core/Debugger.cpp @@ -1827,6 +1827,12 @@ } void Debugger::HandleProgressEvent(const lldb::EventSP &event_sp) { + Log *log = GetLog(LLDBLog::Events); + + LLDB_LOGF(log, "%p Debugger('%llu')::HandleProgressEvent (event_sp = {%p})", + static_cast(this), m_uid, + static_cast(event_sp.get())); + auto *data = ProgressEventData::GetEventDataFromEvent(event_sp.get()); if (!data) return; @@ -1835,10 +1841,22 @@ // going to show the progress. const uint64_t id = data->GetID(); if (m_current_event_id) { + if (data->IsFinite()) + LLDB_LOGF(log, + "%p Debugger('%llu')::HandleProgressEvent (m_current_event_id " + "= {%llu}, data = {id = %llu, message = %s, completed = %llu, " + "total = %llu})", + static_cast(this), m_uid, *m_current_event_id, id, + data->GetMessage().data(), data->GetCompleted(), + data->GetTotal()); + else + LLDB_LOGF(log, + "%p Debugger('%llu')::HandleProgressEvent (m_current_event_id " + "= {%llu}, data = {id = %llu, message = %s, infinite = true})", + static_cast(this), m_uid, *m_current_event_id, id, + data->GetMessage().data()); if (id != *m_current_event_id) return; - if (data->GetCompleted()) - m_current_event_id.reset(); } else { m_current_event_id = id; } @@ -1860,8 +1878,9 @@ // Print over previous line, if any. output->Printf("\r"); - if (data->GetCompleted()) { + if (data->GetCompleted() == data->GetTotal()) { // Clear the current line. + m_current_event_id.reset(); output->Printf("\x1B[2K"); output->Flush(); return;