Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions lldb/include/lldb/Core/Debugger.h
Original file line number Diff line number Diff line change
Expand Up @@ -340,8 +340,6 @@ class Debugger : public std::enable_shared_from_this<Debugger>,

bool SetUseSourceCache(bool use_source_cache);

bool GetMarkHiddenFrames() const;

bool GetHighlightSource() const;

lldb::StopShowColumn GetStopShowColumn() const;
Expand Down
4 changes: 2 additions & 2 deletions lldb/include/lldb/Target/StackFrame.h
Original file line number Diff line number Diff line change
Expand Up @@ -363,7 +363,7 @@ class StackFrame : public ExecutionContextScope,
/// \param [in] frame_marker
/// Optional string that will be prepended to the frame output description.
virtual void DumpUsingSettingsFormat(Stream *strm, bool show_unique = false,
const llvm::StringRef frame_marker = "");
const char *frame_marker = nullptr);

/// Print a description for this frame using a default format.
///
Expand Down Expand Up @@ -400,7 +400,7 @@ class StackFrame : public ExecutionContextScope,
/// Returns true if successful.
virtual bool GetStatus(Stream &strm, bool show_frame_info, bool show_source,
bool show_unique = false,
const llvm::StringRef frame_marker = "");
const char *frame_marker = nullptr);

/// Query whether this frame is a concrete frame on the call stack, or if it
/// is an inlined frame derived from the debug information and presented by
Expand Down
19 changes: 1 addition & 18 deletions lldb/include/lldb/Target/StackFrameList.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,22 +49,6 @@ class StackFrameList : public std::enable_shared_from_this<StackFrameList> {
/// Resets the selected frame index of this object.
void ClearSelectedFrameIndex();

/// Returns \p true if the next frame is hidden.
bool IsNextFrameHidden(lldb_private::StackFrame &frame);

/// Returns \p true if the previous frame is hidden.
bool IsPreviousFrameHidden(lldb_private::StackFrame &frame);

/// Returns the stack frame marker depending on if \p frame_sp:
/// @li is selected: *
/// @li is the first non hidden frame: ﹍
/// @li is the last non hidden frame: ﹉
///
/// If the terminal does not support Unicode rendering, the hidden frame
/// markers are replaced with whitespaces.
std::string FrameMarker(lldb::StackFrameSP frame_sp,
lldb::StackFrameSP selected_frame_sp);

/// Get the currently selected frame index.
/// We should only call SelectMostRelevantFrame if (a) the user hasn't already
/// selected a frame, and (b) if this really is a user facing
Expand Down Expand Up @@ -112,8 +96,7 @@ class StackFrameList : public std::enable_shared_from_this<StackFrameList> {
size_t GetStatus(Stream &strm, uint32_t first_frame, uint32_t num_frames,
bool show_frame_info, uint32_t num_frames_with_source,
bool show_unique = false, bool show_hidden = false,
bool show_hidden_marker = true,
bool show_selected_frame = false);
const char *frame_marker = nullptr);

/// Returns whether we have currently fetched all the frames of a stack.
bool WereAllFramesFetched() const;
Expand Down
29 changes: 0 additions & 29 deletions lldb/packages/Python/lldbsuite/test/decorators.py
Original file line number Diff line number Diff line change
Expand Up @@ -439,35 +439,6 @@ def impl(func):
return impl


def unicode_test(func):
"""Decorate the item as a test which requires Unicode to be enabled.

lldb checks the value of the `LANG` environment variable for the substring "utf-8"
to determine if the terminal supports Unicode (except on Windows, were we assume
it's always supported).
This decorator sets LANG to `utf-8` before running the test and resets it to its
previous value afterwards.
"""

def unicode_wrapped(*args, **kwargs):
import os

previous_lang = os.environ.get("LANG", None)
os.environ["LANG"] = "en_US.UTF-8"
try:
func(*args, **kwargs)
except Exception as err:
raise err
finally:
# Reset the value, whether the test failed or not.
if previous_lang is not None:
os.environ["LANG"] = previous_lang
else:
del os.environ["LANG"]

return unicode_wrapped


def no_debug_info_test(func):
"""Decorate the item as a test what don't use any debug info. If this annotation is specified
then the test runner won't generate a separate test for each debug info format."""
Expand Down
4 changes: 0 additions & 4 deletions lldb/source/Core/CoreProperties.td
Original file line number Diff line number Diff line change
Expand Up @@ -114,10 +114,6 @@ let Definition = "debugger" in {
Global,
DefaultTrue,
Desc<"If true, LLDB will highlight the displayed source code.">;
def MarkHiddenFrames: Property<"mark-hidden-frames", "Boolean">,
Global,
DefaultTrue,
Desc<"If true, LLDB will add a marker to delimit hidden frames in backtraces.">;
def StopShowColumn: Property<"stop-show-column", "Enum">,
DefaultEnumValue<"eStopShowColumnAnsiOrCaret">,
EnumValues<"OptionEnumValues(s_stop_show_column_values)">,
Expand Down
7 changes: 0 additions & 7 deletions lldb/source/Core/Debugger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -584,13 +584,6 @@ bool Debugger::SetUseSourceCache(bool b) {
}
return ret;
}

bool Debugger::GetMarkHiddenFrames() const {
const uint32_t idx = ePropertyMarkHiddenFrames;
return GetPropertyAtIndexAs<bool>(
idx, g_debugger_properties[idx].default_uint_value != 0);
}

bool Debugger::GetHighlightSource() const {
const uint32_t idx = ePropertyHighlightSource;
return GetPropertyAtIndexAs<bool>(
Expand Down
5 changes: 2 additions & 3 deletions lldb/source/Target/StackFrame.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1945,7 +1945,7 @@ bool StackFrame::DumpUsingFormat(Stream &strm,
}

void StackFrame::DumpUsingSettingsFormat(Stream *strm, bool show_unique,
const llvm::StringRef frame_marker) {
const char *frame_marker) {
if (strm == nullptr)
return;

Expand Down Expand Up @@ -2044,8 +2044,7 @@ bool StackFrame::HasCachedData() const {
}

bool StackFrame::GetStatus(Stream &strm, bool show_frame_info, bool show_source,
bool show_unique,
const llvm::StringRef frame_marker) {
bool show_unique, const char *frame_marker) {
if (show_frame_info) {
strm.Indent();
DumpUsingSettingsFormat(&strm, show_unique, frame_marker);
Expand Down
53 changes: 14 additions & 39 deletions lldb/source/Target/StackFrameList.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
#include "lldb/Utility/LLDBLog.h"
#include "lldb/Utility/Log.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/Support/ConvertUTF.h"

#include <memory>

Expand Down Expand Up @@ -930,43 +929,11 @@ StackFrameList::GetStackFrameSPForStackFramePtr(StackFrame *stack_frame_ptr) {
return ret_sp;
}

bool StackFrameList::IsNextFrameHidden(lldb_private::StackFrame &frame) {
uint32_t frame_idx = frame.GetFrameIndex();
StackFrameSP frame_sp = GetFrameAtIndex(frame_idx + 1);
if (!frame_sp)
return false;
return frame_sp->IsHidden();
}

bool StackFrameList::IsPreviousFrameHidden(lldb_private::StackFrame &frame) {
uint32_t frame_idx = frame.GetFrameIndex();
if (frame_idx == 0)
return false;
StackFrameSP frame_sp = GetFrameAtIndex(frame_idx - 1);
if (!frame_sp)
return false;
return frame_sp->IsHidden();
}

std::string StackFrameList::FrameMarker(lldb::StackFrameSP frame_sp,
lldb::StackFrameSP selected_frame_sp) {
if (frame_sp == selected_frame_sp)
return Terminal::SupportsUnicode() ? u8" * " : u8"* ";
else if (!Terminal::SupportsUnicode())
return u8" ";
else if (IsPreviousFrameHidden(*frame_sp))
return u8"﹉ ";
else if (IsNextFrameHidden(*frame_sp))
return u8"﹍ ";
return u8" ";
}

size_t StackFrameList::GetStatus(Stream &strm, uint32_t first_frame,
uint32_t num_frames, bool show_frame_info,
uint32_t num_frames_with_source,
bool show_unique, bool show_hidden,
bool show_hidden_marker,
bool show_selected_frame) {
const char *selected_frame_marker) {
size_t num_frames_displayed = 0;

if (num_frames == 0)
Expand All @@ -984,17 +951,25 @@ size_t StackFrameList::GetStatus(Stream &strm, uint32_t first_frame,

StackFrameSP selected_frame_sp =
m_thread.GetSelectedFrame(DoNoSelectMostRelevantFrame);
const char *unselected_marker = nullptr;
std::string buffer;
std::string marker;
if (selected_frame_marker) {
size_t len = strlen(selected_frame_marker);
buffer.insert(buffer.begin(), len, ' ');
unselected_marker = buffer.c_str();
}
const char *marker = nullptr;
for (frame_idx = first_frame; frame_idx < last_frame; ++frame_idx) {
frame_sp = GetFrameAtIndex(frame_idx);
if (!frame_sp)
break;

if (show_selected_frame)
marker = FrameMarker(frame_sp, selected_frame_sp);
else
marker = FrameMarker(frame_sp, nullptr);
if (selected_frame_marker != nullptr) {
if (frame_sp == selected_frame_sp)
marker = selected_frame_marker;
else
marker = unselected_marker;
}

// Hide uninteresting frames unless it's the selected frame.
if (!show_hidden && frame_sp != selected_frame_sp && frame_sp->IsHidden())
Expand Down
23 changes: 8 additions & 15 deletions lldb/source/Target/Thread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1888,9 +1888,9 @@ size_t Thread::GetStatus(Stream &strm, uint32_t start_frame,
uint32_t num_frames, uint32_t num_frames_with_source,
bool stop_format, bool show_hidden, bool only_stacks) {

ExecutionContext exe_ctx(shared_from_this());
Target *target = exe_ctx.GetTargetPtr();
if (!only_stacks) {
ExecutionContext exe_ctx(shared_from_this());
Target *target = exe_ctx.GetTargetPtr();
Process *process = exe_ctx.GetProcessPtr();
strm.Indent();
bool is_selected = false;
Expand Down Expand Up @@ -1924,19 +1924,16 @@ size_t Thread::GetStatus(Stream &strm, uint32_t start_frame,

const bool show_frame_info = true;
const bool show_frame_unique = only_stacks;
bool show_selected_frame = false;
const char *selected_frame_marker = nullptr;
if (num_frames == 1 || only_stacks ||
(GetID() != GetProcess()->GetThreadList().GetSelectedThread()->GetID()))
strm.IndentMore();
else
show_selected_frame = true;
selected_frame_marker = "* ";

bool show_hidden_marker =
target && target->GetDebugger().GetMarkHiddenFrames();
num_frames_shown = GetStackFrameList()->GetStatus(
strm, start_frame, num_frames, show_frame_info, num_frames_with_source,
show_frame_unique, show_hidden, show_hidden_marker,
show_selected_frame);
show_frame_unique, show_hidden, selected_frame_marker);
if (num_frames == 1)
strm.IndentLess();
strm.IndentLess();
Expand Down Expand Up @@ -2036,13 +2033,9 @@ size_t Thread::GetStackFrameStatus(Stream &strm, uint32_t first_frame,
uint32_t num_frames, bool show_frame_info,
uint32_t num_frames_with_source,
bool show_hidden) {
ExecutionContext exe_ctx(shared_from_this());
Target *target = exe_ctx.GetTargetPtr();
bool show_hidden_marker =
target && target->GetDebugger().GetMarkHiddenFrames();
return GetStackFrameList()->GetStatus(
strm, first_frame, num_frames, show_frame_info, num_frames_with_source,
/*show_unique*/ false, show_hidden, show_hidden_marker);
return GetStackFrameList()->GetStatus(strm, first_frame, num_frames,
show_frame_info, num_frames_with_source,
/*show_unique*/ false, show_hidden);
}

Unwind &Thread::GetUnwinder() {
Expand Down
3 changes: 0 additions & 3 deletions lldb/test/API/terminal/hidden_frame_markers/Makefile

This file was deleted.

This file was deleted.

12 changes: 0 additions & 12 deletions lldb/test/API/terminal/hidden_frame_markers/main.cpp

This file was deleted.

Loading