diff options
| author | Greg Clayton <gclayton@apple.com> | 2012-07-11 20:33:48 +0000 |
|---|---|---|
| committer | Greg Clayton <gclayton@apple.com> | 2012-07-11 20:33:48 +0000 |
| commit | 53eb7ad2f75a8eb6dee394cd9140625f6ffe9fd3 (patch) | |
| tree | 3c4f889f38f1d363a1a4ecd4acba610a6cd8eaef /lldb/source/Target/StackFrame.cpp | |
| parent | 1fa2acaed477d6aeb54ad4cb2c5e753ed91b0e80 (diff) | |
<rdar://problem/11852100>
The "stop-line-count-after" and "stop-line-count-before" settings are broken. This fixes them.
llvm-svn: 160071
Diffstat (limited to 'lldb/source/Target/StackFrame.cpp')
| -rw-r--r-- | lldb/source/Target/StackFrame.cpp | 91 |
1 files changed, 48 insertions, 43 deletions
diff --git a/lldb/source/Target/StackFrame.cpp b/lldb/source/Target/StackFrame.cpp index 780a26360262..d9c9eb252f96 100644 --- a/lldb/source/Target/StackFrame.cpp +++ b/lldb/source/Target/StackFrame.cpp @@ -1296,10 +1296,9 @@ StackFrame::HasCachedData () const bool StackFrame::GetStatus (Stream& strm, bool show_frame_info, - bool show_source, - uint32_t source_lines_before, - uint32_t source_lines_after) + bool show_source) { + if (show_frame_info) { strm.Indent(); @@ -1312,56 +1311,62 @@ StackFrame::GetStatus (Stream& strm, bool have_source = false; DebuggerInstanceSettings::StopDisassemblyType disasm_display = DebuggerInstanceSettings::eStopDisassemblyTypeNever; Target *target = exe_ctx.GetTargetPtr(); - if (target && (source_lines_before || source_lines_after)) + if (target) { - GetSymbolContext(eSymbolContextCompUnit | eSymbolContextLineEntry); + Debugger &debugger = target->GetDebugger(); + const uint32_t source_lines_before = debugger.GetStopSourceLineCount(true); + const uint32_t source_lines_after = debugger.GetStopSourceLineCount(false); + disasm_display = debugger.GetStopDisassemblyDisplay (); - if (m_sc.comp_unit && m_sc.line_entry.IsValid()) + if (source_lines_before > 0 || source_lines_after > 0) { - if (target->GetSourceManager().DisplaySourceLinesWithLineNumbers (m_sc.line_entry.file, - m_sc.line_entry.line, - source_lines_before, - source_lines_after, - "->", - &strm)) + GetSymbolContext(eSymbolContextCompUnit | eSymbolContextLineEntry); + + if (m_sc.comp_unit && m_sc.line_entry.IsValid()) { - have_source = true; + if (target->GetSourceManager().DisplaySourceLinesWithLineNumbers (m_sc.line_entry.file, + m_sc.line_entry.line, + source_lines_before, + source_lines_after, + "->", + &strm)) + { + have_source = true; + } } } - disasm_display = target->GetDebugger().GetStopDisassemblyDisplay (); - } - - switch (disasm_display) - { - case DebuggerInstanceSettings::eStopDisassemblyTypeNever: - break; - - case DebuggerInstanceSettings::eStopDisassemblyTypeNoSource: - if (have_source) - break; - // Fall through to next case - case DebuggerInstanceSettings::eStopDisassemblyTypeAlways: - if (target) + switch (disasm_display) { - const uint32_t disasm_lines = target->GetDebugger().GetDisassemblyLineCount(); - if (disasm_lines > 0) + case DebuggerInstanceSettings::eStopDisassemblyTypeNever: + break; + + case DebuggerInstanceSettings::eStopDisassemblyTypeNoSource: + if (have_source) + break; + // Fall through to next case + case DebuggerInstanceSettings::eStopDisassemblyTypeAlways: + if (target) { - const ArchSpec &target_arch = target->GetArchitecture(); - AddressRange pc_range; - pc_range.GetBaseAddress() = GetFrameCodeAddress(); - pc_range.SetByteSize(disasm_lines * target_arch.GetMaximumOpcodeByteSize()); - Disassembler::Disassemble (target->GetDebugger(), - target_arch, - NULL, - exe_ctx, - pc_range, - disasm_lines, - 0, - Disassembler::eOptionMarkPCAddress, - strm); + const uint32_t disasm_lines = debugger.GetDisassemblyLineCount(); + if (disasm_lines > 0) + { + const ArchSpec &target_arch = target->GetArchitecture(); + AddressRange pc_range; + pc_range.GetBaseAddress() = GetFrameCodeAddress(); + pc_range.SetByteSize(disasm_lines * target_arch.GetMaximumOpcodeByteSize()); + Disassembler::Disassemble (target->GetDebugger(), + target_arch, + NULL, + exe_ctx, + pc_range, + disasm_lines, + 0, + Disassembler::eOptionMarkPCAddress, + strm); + } } + break; } - break; } } return true; |
