diff options
Diffstat (limited to 'lldb/source/Target/StackFrame.cpp')
-rw-r--r-- | lldb/source/Target/StackFrame.cpp | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/lldb/source/Target/StackFrame.cpp b/lldb/source/Target/StackFrame.cpp index c7f2c040162..2be00d659a1 100644 --- a/lldb/source/Target/StackFrame.cpp +++ b/lldb/source/Target/StackFrame.cpp @@ -14,6 +14,7 @@ // Other libraries and framework includes // Project includes #include "lldb/Core/Module.h" +#include "lldb/Core/Debugger.h" #include "lldb/Core/Disassembler.h" #include "lldb/Core/Value.h" #include "lldb/Core/ValueObjectVariable.h" @@ -248,7 +249,7 @@ StackFrame::Disassemble () if (m_disassembly.GetSize() == 0) { ExecutionContext exe_ctx; - Calculate(exe_ctx); + CalculateExecutionContext(exe_ctx); Target &target = m_thread.GetProcess().GetTarget(); Disassembler::Disassemble (target.GetDebugger(), target.GetArchitecture(), @@ -615,13 +616,36 @@ StackFrame::CalculateStackFrame () void -StackFrame::Calculate (ExecutionContext &exe_ctx) +StackFrame::CalculateExecutionContext (ExecutionContext &exe_ctx) { - m_thread.Calculate (exe_ctx); + m_thread.CalculateExecutionContext (exe_ctx); exe_ctx.frame = this; } void +StackFrame::DumpUsingSettingsFormat (Stream *strm) +{ + if (strm == NULL) + return; + + GetSymbolContext(eSymbolContextEverything); + ExecutionContext exe_ctx; + CalculateExecutionContext(exe_ctx); + const char *end = NULL; + StreamString s; + const char *frame_format = m_thread.GetProcess().GetTarget().GetDebugger().GetFrameFormat(); + if (frame_format && Debugger::FormatPrompt (frame_format, &m_sc, &exe_ctx, NULL, s, &end)) + { + strm->Write(s.GetData(), s.GetSize()); + } + else + { + Dump (strm, true, false); + strm->EOL(); + } +} + +void StackFrame::Dump (Stream *strm, bool show_frame_index, bool show_fullpaths) { if (strm == NULL) |