ThreadPlanTracer.cpp revision 745ac7a5826fe7c392007941a4046bfb1a8dff81
1//===-- ThreadPlan.cpp ------------------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#include "lldb/Target/ThreadPlan.h" 11 12// C Includes 13// C++ Includes 14// Other libraries and framework includes 15// Project includes 16#include "lldb/Core/Debugger.h" 17#include "lldb/Core/Log.h" 18#include "lldb/Core/State.h" 19#include "lldb/Target/RegisterContext.h" 20#include "lldb/Target/Thread.h" 21#include "lldb/Target/Process.h" 22#include "lldb/Target/Target.h" 23 24using namespace lldb; 25using namespace lldb_private; 26 27ThreadPlanTracer::ThreadPlanTracer (Thread &thread, lldb::StreamSP &stream_sp) : 28 m_single_step(true), 29 m_enabled (false), 30 m_thread (thread), 31 m_stream_sp (stream_sp) 32{ 33} 34 35ThreadPlanTracer::ThreadPlanTracer (Thread &thread) : 36 m_single_step(true), 37 m_enabled (false), 38 m_thread (thread), 39 m_stream_sp () 40{ 41} 42 43Stream * 44ThreadPlanTracer::GetLogStream () 45{ 46 47 if (m_stream_sp.get()) 48 return m_stream_sp.get(); 49 else 50 return &(m_thread.GetProcess().GetTarget().GetDebugger().GetOutputStream()); 51} 52 53void 54ThreadPlanTracer::Log() 55{ 56 SymbolContext sc; 57 bool show_frame_index = false; 58 bool show_fullpaths = false; 59 60 m_thread.GetStackFrameAtIndex(0)->Dump (GetLogStream(), show_frame_index, show_fullpaths); 61 GetLogStream()->Printf("\n"); 62} 63 64bool 65ThreadPlanTracer::TracerExplainsStop () 66{ 67 if (m_enabled && m_single_step) 68 { 69 lldb::StopInfoSP stop_info = m_thread.GetStopInfo(); 70 if (stop_info->GetStopReason() == eStopReasonTrace) 71 return true; 72 else 73 return false; 74 } 75 else 76 return false; 77} 78