[Lldb-commits] [lldb] r246512 - Make FormatEntity be a little bit smarter when printing function arguments
Enrico Granata via lldb-commits
lldb-commits at lists.llvm.org
Mon Aug 31 17:19:35 PDT 2015
Author: enrico
Date: Mon Aug 31 19:19:35 2015
New Revision: 246512
URL: http://llvm.org/viewvc/llvm-project?rev=246512&view=rev
Log:
Make FormatEntity be a little bit smarter when printing function arguments
Modified:
lldb/trunk/source/Core/FormatEntity.cpp
Modified: lldb/trunk/source/Core/FormatEntity.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/FormatEntity.cpp?rev=246512&r1=246511&r2=246512&view=diff
==============================================================================
--- lldb/trunk/source/Core/FormatEntity.cpp (original)
+++ lldb/trunk/source/Core/FormatEntity.cpp Mon Aug 31 19:19:35 2015
@@ -20,6 +20,7 @@
#include "lldb/Core/ValueObjectVariable.h"
#include "lldb/DataFormatters/DataVisualization.h"
#include "lldb/DataFormatters/FormatManager.h"
+#include "lldb/DataFormatters/ValueObjectPrinter.h"
#include "lldb/Expression/ClangExpressionVariable.h"
#include "lldb/Host/FileSpec.h"
#include "lldb/Interpreter/CommandInterpreter.h"
@@ -1785,20 +1786,34 @@ FormatEntity::Format (const Entry &entry
VariableSP var_sp (args.GetVariableAtIndex (arg_idx));
ValueObjectSP var_value_sp (ValueObjectVariable::Create (exe_scope, var_sp));
+ StreamString ss;
const char *var_representation = nullptr;
const char *var_name = var_value_sp->GetName().GetCString();
- if (var_value_sp->GetCompilerType().IsAggregateType() &&
- DataVisualization::ShouldPrintAsOneLiner(*var_value_sp.get()))
+ if (var_value_sp->GetCompilerType().IsValid())
{
- static StringSummaryFormat format(TypeSummaryImpl::Flags()
- .SetHideItemNames(false)
- .SetShowMembersOneLiner(true),
- "");
- format.FormatObject(var_value_sp.get(), buffer, TypeSummaryOptions());
- var_representation = buffer.c_str();
+ if (var_value_sp && exe_scope->CalculateTarget())
+ var_value_sp = var_value_sp->GetQualifiedRepresentationIfAvailable(exe_scope->CalculateTarget()->TargetProperties::GetPreferDynamicValue(),
+ exe_scope->CalculateTarget()->TargetProperties::GetEnableSyntheticValue());
+ if (var_value_sp->GetCompilerType().IsAggregateType() &&
+ DataVisualization::ShouldPrintAsOneLiner(*var_value_sp.get()))
+ {
+ static StringSummaryFormat format(TypeSummaryImpl::Flags()
+ .SetHideItemNames(false)
+ .SetShowMembersOneLiner(true),
+ "");
+ format.FormatObject(var_value_sp.get(), buffer, TypeSummaryOptions());
+ var_representation = buffer.c_str();
+ }
+ else
+ var_value_sp->DumpPrintableRepresentation(ss,
+ ValueObject::ValueObjectRepresentationStyle::eValueObjectRepresentationStyleSummary,
+ eFormatDefault,
+ ValueObject::PrintableRepresentationSpecialCases::ePrintableRepresentationSpecialCasesAllow,
+ false);
}
- else
- var_representation = var_value_sp->GetValueAsCString();
+
+ if (ss.GetData() && ss.GetSize())
+ var_representation = ss.GetData();
if (arg_idx > 0)
s.PutCString (", ");
if (var_value_sp->GetError().Success())
More information about the lldb-commits
mailing list