void Variable::Dump(Stream *s, bool show_context) const { s->Printf("%p: ", static_cast<const void*>(this)); s->Indent(); *s << "Variable" << (const UserID&)*this; if (m_name) *s << ", name = \"" << m_name << "\""; if (m_symfile_type_sp) { Type *type = m_symfile_type_sp->GetType(); if (type) { *s << ", type = {" << type->GetID() << "} " << (void*)type << " ("; type->DumpTypeName(s); s->PutChar(')'); } } if (m_scope != eValueTypeInvalid) { s->PutCString(", scope = "); switch (m_scope) { case eValueTypeVariableGlobal: s->PutCString(m_external ? "global" : "static"); break; case eValueTypeVariableArgument: s->PutCString("parameter"); break; case eValueTypeVariableLocal: s->PutCString("local"); break; default: *s << "??? (" << m_scope << ')'; } } if (show_context && m_owner_scope != nullptr) { s->PutCString(", context = ( "); m_owner_scope->DumpSymbolContext(s); s->PutCString(" )"); } bool show_fullpaths = false; m_declaration.Dump(s, show_fullpaths); if (m_location.IsValid()) { s->PutCString(", location = "); lldb::addr_t loclist_base_addr = LLDB_INVALID_ADDRESS; if (m_location.IsLocationList()) { SymbolContext variable_sc; m_owner_scope->CalculateSymbolContext(&variable_sc); if (variable_sc.function) loclist_base_addr = variable_sc.function->GetAddressRange().GetBaseAddress().GetFileAddress(); } ABI *abi = nullptr; if (m_owner_scope) { ModuleSP module_sp (m_owner_scope->CalculateSymbolContextModule()); if (module_sp) abi = ABI::FindPlugin (module_sp->GetArchitecture()).get(); } m_location.GetDescription(s, lldb::eDescriptionLevelBrief, loclist_base_addr, abi); } if (m_external) s->PutCString(", external"); if (m_artificial) s->PutCString(", artificial"); s->EOL(); }