Skip to content

Commit 76cdada

Browse files
committed
[lldb] Add more logging to GetTypeRef and GetSwiftRuntimeTypeInfo
(cherry picked from commit b34767d)
1 parent d8a6642 commit 76cdada

File tree

1 file changed

+58
-3
lines changed

1 file changed

+58
-3
lines changed

lldb/source/Plugins/LanguageRuntime/Swift/SwiftLanguageRuntimeDynamicTypeResolution.cpp

Lines changed: 58 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,36 @@ class TargetReflectionContext
270270
const swift::reflection::TypeInfo *
271271
getTypeInfo(const swift::reflection::TypeRef *type_ref,
272272
swift::remote::TypeInfoProvider *provider) override {
273-
return m_reflection_ctx.getTypeInfo(type_ref, provider);
273+
if (!type_ref)
274+
return nullptr;
275+
276+
Log *log(GetLog(LLDBLog::Types));
277+
if (log && log->GetVerbose()) {
278+
std::stringstream ss;
279+
type_ref->dump(ss);
280+
LLDB_LOG(log, "[TargetReflectionContext::getTypeInfo] Getting "
281+
"type info for typeref:\n%s",
282+
ss.str());
283+
}
284+
285+
auto type_info = m_reflection_ctx.getTypeInfo(type_ref, provider);
286+
if (log && !type_info) {
287+
std::stringstream ss;
288+
type_ref->dump(ss);
289+
LLDB_LOG(log,
290+
"[TargetReflectionContext::getTypeInfo] Could not get "
291+
"type info for typeref:\n%s",
292+
ss.str());
293+
}
294+
295+
if (log && log->GetVerbose()) {
296+
std::stringstream ss;
297+
type_info->dump(ss);
298+
log->Printf("[TargetReflectionContext::getTypeInfo] Found "
299+
"type info:\n%s",
300+
ss.str().c_str());
301+
}
302+
return type_info;
274303
}
275304

276305
swift::reflection::MemoryReader &getReader() override {
@@ -3173,6 +3202,12 @@ lldb::addr_t SwiftLanguageRuntimeImpl::FixupAddress(lldb::addr_t addr,
31733202
const swift::reflection::TypeRef *
31743203
SwiftLanguageRuntimeImpl::GetTypeRef(CompilerType type,
31753204
TypeSystemSwiftTypeRef *module_holder) {
3205+
Log *log(GetLog(LLDBLog::Types));
3206+
if (log && log->GetVerbose())
3207+
LLDB_LOG(log, "[SwiftLanguageRuntimeImpl::GetTypeRef] Getting typeref for "
3208+
"type: %s\n",
3209+
type.GetMangledTypeName());
3210+
31763211
// Demangle the mangled name.
31773212
swift::Demangle::Demangler dem;
31783213
ConstString mangled_name = type.GetMangledTypeName();
@@ -3190,17 +3225,37 @@ SwiftLanguageRuntimeImpl::GetTypeRef(CompilerType type,
31903225
return nullptr;
31913226

31923227
auto type_ref_or_err =
3193-
swift::Demangle::decodeMangledType(reflection_ctx->getBuilder(), node);
3194-
if (type_ref_or_err.isError())
3228+
swift::Demangle::decodeMangledType(reflection_ctx->getBuilder(), node);
3229+
if (type_ref_or_err.isError()) {
3230+
LLDB_LOG(log,
3231+
"[SwiftLanguageRuntimeImpl::GetTypeRef] Could not find typeref "
3232+
"for type: %s. Decode mangled type failed. Error: %s\n.",
3233+
type.GetMangledTypeName(),
3234+
type_ref_or_err.getError()->copyErrorString());
31953235
return nullptr;
3236+
}
31963237
const swift::reflection::TypeRef *type_ref = type_ref_or_err.getType();
3238+
if (log && log->GetVerbose()) {
3239+
std::stringstream ss;
3240+
type_ref->dump(ss);
3241+
LLDB_LOG(log, "[SwiftLanguageRuntimeImpl::GetTypeRef] Found typeref for "
3242+
"type: %s:\n%s",
3243+
type.GetMangledTypeName(), ss.str());
3244+
}
31973245
return type_ref;
31983246
}
31993247

32003248
const swift::reflection::TypeInfo *
32013249
SwiftLanguageRuntimeImpl::GetSwiftRuntimeTypeInfo(
32023250
CompilerType type, ExecutionContextScope *exe_scope,
32033251
swift::reflection::TypeRef const **out_tr) {
3252+
Log *log(GetLog(LLDBLog::Types));
3253+
3254+
if (log && log->GetVerbose())
3255+
LLDB_LOG(log, "[SwiftLanguageRuntimeImpl::GetSwiftRuntimeTypeInfo] Getting "
3256+
"type info for type: %s\n",
3257+
type.GetMangledTypeName());
3258+
32043259
auto ts = type.GetTypeSystem().dyn_cast_or_null<TypeSystemSwift>();
32053260
if (!ts)
32063261
return nullptr;

0 commit comments

Comments
 (0)