Skip to content

Commit 9cc21bf

Browse files
committed
Add logs for SymbolFileDWARF::FindTypes
1 parent 3c3df1b commit 9cc21bf

File tree

1 file changed

+28
-4
lines changed

1 file changed

+28
-4
lines changed

lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2737,10 +2737,19 @@ void SymbolFileDWARF::FindTypes(const TypeQuery &query, TypeResults &results) {
27372737
if (results.AlreadySearched(this))
27382738
return;
27392739

2740+
auto type_basename = query.GetTypeBasename();
2741+
2742+
Log *log = GetLog(DWARFLog::Lookups);
2743+
if (log) {
2744+
GetObjectFile()->GetModule()->LogMessage(
2745+
log, "SymbolFileDWARF::FindTypes(type_basename=\"{0}\")",
2746+
type_basename);
2747+
}
2748+
27402749
std::lock_guard<std::recursive_mutex> guard(GetModuleMutex());
27412750

27422751
bool have_index_match = false;
2743-
m_index->GetTypes(query.GetTypeBasename(), [&](DWARFDIE die) {
2752+
m_index->GetTypes(type_basename, [&](DWARFDIE die) {
27442753
// Check the language, but only if we have a language filter.
27452754
if (query.HasLanguage()) {
27462755
if (!query.LanguageMatches(GetLanguageFamily(*die.GetCU())))
@@ -2779,7 +2788,19 @@ void SymbolFileDWARF::FindTypes(const TypeQuery &query, TypeResults &results) {
27792788
return !results.Done(query); // Keep iterating if we aren't done.
27802789
});
27812790

2782-
if (results.Done(query))
2791+
auto CheckIsDoneAndLog = [&results, &query, log, type_basename, this] {
2792+
if (results.Done(query)) {
2793+
if (log) {
2794+
GetObjectFile()->GetModule()->LogMessage(
2795+
log, "SymbolFileDWARF::FindTypes(type_basename=\"{0}\") => {1}",
2796+
type_basename, results.GetTypeMap().GetSize());
2797+
}
2798+
return true;
2799+
}
2800+
return false;
2801+
};
2802+
2803+
if (CheckIsDoneAndLog())
27832804
return;
27842805

27852806
// With -gsimple-template-names, a templated type's DW_AT_name will not
@@ -2834,7 +2855,7 @@ void SymbolFileDWARF::FindTypes(const TypeQuery &query, TypeResults &results) {
28342855
}
28352856
return !results.Done(query); // Keep iterating if we aren't done.
28362857
});
2837-
if (results.Done(query))
2858+
if (CheckIsDoneAndLog())
28382859
return;
28392860
}
28402861
}
@@ -2847,8 +2868,11 @@ void SymbolFileDWARF::FindTypes(const TypeQuery &query, TypeResults &results) {
28472868
for (const auto &pair : m_external_type_modules) {
28482869
if (ModuleSP external_module_sp = pair.second) {
28492870
external_module_sp->FindTypes(query, results);
2850-
if (results.Done(query))
2871+
if (results.Done(query)) {
2872+
// don't use CheckIsDoneAndLog because the results are already logged
2873+
// in the nested FindTypes call
28512874
return;
2875+
}
28522876
}
28532877
}
28542878
}

0 commit comments

Comments
 (0)