[lldb] Show module name in progress update for downloading symbols (#85342)

Currently, we always show the argument passed to dsymForUUID in the
corresponding progress update. Most of the time this is a UUID, but it
can also be an absolute path. The former is pretty uninformative and the
latter needlessly noisy.

This changes the progress update to print the UUID and the module name,
if both are available. Otherwise, we print the UUID or the module name
depending on which one is available.

We now also unconditionally pass the module file spec and architecture
to DownloadObjectAndSymbolFile, while previously this was conditional on
the file existing on-disk. This should be harmless:

  - We already check that the file exists in DownloadObjectAndSymbolFile.
  - It doesn't make sense to check the filesystem for the architecutre.

rdar://124643548
This commit is contained in:
Jonas Devlieghere
2024-03-15 12:34:34 -07:00
committed by GitHub
parent 0e21672d99
commit b7dd6012eb
2 changed files with 19 additions and 16 deletions

View File

@@ -3377,7 +3377,7 @@ protected:
case 'r': {
size_t ref_count = 0;
char in_shared_cache = 'Y';
ModuleSP module_sp(module->shared_from_this());
if (!ModuleList::ModuleIsInCache(module))
in_shared_cache = 'N';
@@ -4508,11 +4508,8 @@ protected:
ModuleSpec module_spec;
module_spec.GetUUID() = frame_module_sp->GetUUID();
if (FileSystem::Instance().Exists(frame_module_sp->GetPlatformFileSpec())) {
module_spec.GetArchitecture() = frame_module_sp->GetArchitecture();
module_spec.GetFileSpec() = frame_module_sp->GetPlatformFileSpec();
}
module_spec.GetArchitecture() = frame_module_sp->GetArchitecture();
module_spec.GetFileSpec() = frame_module_sp->GetPlatformFileSpec();
if (!DownloadObjectAndSymbolFile(module_spec, result, flush)) {
result.AppendError("unable to find debug symbols for the current frame");
@@ -4557,12 +4554,8 @@ protected:
ModuleSpec module_spec;
module_spec.GetUUID() = frame_module_sp->GetUUID();
if (FileSystem::Instance().Exists(
frame_module_sp->GetPlatformFileSpec())) {
module_spec.GetArchitecture() = frame_module_sp->GetArchitecture();
module_spec.GetFileSpec() = frame_module_sp->GetPlatformFileSpec();
}
module_spec.GetFileSpec() = frame_module_sp->GetPlatformFileSpec();
module_spec.GetArchitecture() = frame_module_sp->GetArchitecture();
bool current_frame_flush = false;
if (DownloadObjectAndSymbolFile(module_spec, result, current_frame_flush))

View File

@@ -1066,11 +1066,21 @@ bool SymbolLocatorDebugSymbols::DownloadObjectAndSymbolFile(
command << lookup_arg;
// Log and report progress.
Log *log = GetLog(LLDBLog::Host);
LLDB_LOG(log, "Calling {0} with {1} to find dSYM: {2}", dsymForUUID_exe_path,
lookup_arg, command.GetString());
std::string lookup_desc;
if (uuid_ptr && file_spec_ptr)
lookup_desc =
llvm::formatv("{0} ({1})", file_spec_ptr->GetFilename().GetString(),
uuid_ptr->GetAsString());
else if (uuid_ptr)
lookup_desc = uuid_ptr->GetAsString();
else if (file_spec_ptr)
lookup_desc = file_spec_ptr->GetFilename().GetString();
Progress progress("Downloading symbol file", lookup_arg);
Log *log = GetLog(LLDBLog::Host);
LLDB_LOG(log, "Calling {0} for {1} to find dSYM: {2}", dsymForUUID_exe_path,
lookup_desc, command.GetString());
Progress progress("Downloading symbol file for", lookup_desc);
// Invoke dsymForUUID.
int exit_status = -1;