Mark the selected frame of the selected thread in backtraces.

<rdar://problem/15252474>

llvm-svn: 192989
This commit is contained in:
Jim Ingham
2013-10-18 17:38:31 +00:00
parent fbc057ea73
commit 8ec10efc5d
5 changed files with 46 additions and 11 deletions

View File

@@ -863,7 +863,8 @@ StackFrameList::GetStatus (Stream& strm,
uint32_t first_frame,
uint32_t num_frames,
bool show_frame_info,
uint32_t num_frames_with_source)
uint32_t num_frames_with_source,
const char *selected_frame_marker)
{
size_t num_frames_displayed = 0;
@@ -880,15 +881,34 @@ StackFrameList::GetStatus (Stream& strm,
else
last_frame = first_frame + num_frames;
StackFrameSP selected_frame_sp = m_thread.GetSelectedFrame();
const char *unselected_marker = NULL;
std::string buffer;
if (selected_frame_marker)
{
size_t len = strlen(selected_frame_marker);
buffer.insert(buffer.begin(), len, ' ');
unselected_marker = buffer.c_str();
}
const char *marker = NULL;
for (frame_idx = first_frame; frame_idx < last_frame; ++frame_idx)
{
frame_sp = GetFrameAtIndex(frame_idx);
if (frame_sp.get() == NULL)
break;
if (selected_frame_marker != NULL)
{
if (frame_sp == selected_frame_sp)
marker = selected_frame_marker;
else
marker = unselected_marker;
}
if (!frame_sp->GetStatus (strm,
show_frame_info,
num_frames_with_source > (first_frame - frame_idx)))
num_frames_with_source > (first_frame - frame_idx), marker))
break;
++num_frames_displayed;
}