SBThread.h revision 74089e10cfbb4665da128f26d78c2b4006b5f1c6
125b3c049e70834cf33790a28643ab058b507b35cBen Cheng//===-- SBThread.h ----------------------------------------------*- C++ -*-===// 225b3c049e70834cf33790a28643ab058b507b35cBen Cheng// 325b3c049e70834cf33790a28643ab058b507b35cBen Cheng// The LLVM Compiler Infrastructure 425b3c049e70834cf33790a28643ab058b507b35cBen Cheng// 525b3c049e70834cf33790a28643ab058b507b35cBen Cheng// This file is distributed under the University of Illinois Open Source 625b3c049e70834cf33790a28643ab058b507b35cBen Cheng// License. See LICENSE.TXT for details. 725b3c049e70834cf33790a28643ab058b507b35cBen Cheng// 825b3c049e70834cf33790a28643ab058b507b35cBen Cheng//===----------------------------------------------------------------------===// 925b3c049e70834cf33790a28643ab058b507b35cBen Cheng 1025b3c049e70834cf33790a28643ab058b507b35cBen Cheng#ifndef LLDB_SBThread_h_ 1125b3c049e70834cf33790a28643ab058b507b35cBen Cheng#define LLDB_SBThread_h_ 1225b3c049e70834cf33790a28643ab058b507b35cBen Cheng 1325b3c049e70834cf33790a28643ab058b507b35cBen Cheng#include "lldb/API/SBDefines.h" 1425b3c049e70834cf33790a28643ab058b507b35cBen Cheng 1525b3c049e70834cf33790a28643ab058b507b35cBen Chengnamespace lldb { 1625b3c049e70834cf33790a28643ab058b507b35cBen Cheng 1725b3c049e70834cf33790a28643ab058b507b35cBen Chengclass SBFrame; 1825b3c049e70834cf33790a28643ab058b507b35cBen Cheng 1925b3c049e70834cf33790a28643ab058b507b35cBen Chengclass SBThread 2025b3c049e70834cf33790a28643ab058b507b35cBen Cheng{ 2125b3c049e70834cf33790a28643ab058b507b35cBen Chengpublic: 2225b3c049e70834cf33790a28643ab058b507b35cBen Cheng SBThread (); 2325b3c049e70834cf33790a28643ab058b507b35cBen Cheng 2425b3c049e70834cf33790a28643ab058b507b35cBen Cheng SBThread (const lldb::SBThread &thread); 2525b3c049e70834cf33790a28643ab058b507b35cBen Cheng 2625b3c049e70834cf33790a28643ab058b507b35cBen Cheng ~SBThread(); 2725b3c049e70834cf33790a28643ab058b507b35cBen Cheng 2825b3c049e70834cf33790a28643ab058b507b35cBen Cheng bool 2925b3c049e70834cf33790a28643ab058b507b35cBen Cheng IsValid() const; 3025b3c049e70834cf33790a28643ab058b507b35cBen Cheng 3125b3c049e70834cf33790a28643ab058b507b35cBen Cheng lldb::StopReason 3225b3c049e70834cf33790a28643ab058b507b35cBen Cheng GetStopReason(); 3325b3c049e70834cf33790a28643ab058b507b35cBen Cheng 3425b3c049e70834cf33790a28643ab058b507b35cBen Cheng size_t 3525b3c049e70834cf33790a28643ab058b507b35cBen Cheng GetStopDescription (char *dst, size_t dst_len); 3625b3c049e70834cf33790a28643ab058b507b35cBen Cheng 3725b3c049e70834cf33790a28643ab058b507b35cBen Cheng lldb::tid_t 3825b3c049e70834cf33790a28643ab058b507b35cBen Cheng GetThreadID () const; 3925b3c049e70834cf33790a28643ab058b507b35cBen Cheng 4025b3c049e70834cf33790a28643ab058b507b35cBen Cheng uint32_t 4125b3c049e70834cf33790a28643ab058b507b35cBen Cheng GetIndexID () const; 4225b3c049e70834cf33790a28643ab058b507b35cBen Cheng 4325b3c049e70834cf33790a28643ab058b507b35cBen Cheng const char * 4425b3c049e70834cf33790a28643ab058b507b35cBen Cheng GetName () const; 4525b3c049e70834cf33790a28643ab058b507b35cBen Cheng 4625b3c049e70834cf33790a28643ab058b507b35cBen Cheng const char * 4725b3c049e70834cf33790a28643ab058b507b35cBen Cheng GetQueueName() const; 4825b3c049e70834cf33790a28643ab058b507b35cBen Cheng 4925b3c049e70834cf33790a28643ab058b507b35cBen Cheng void 5025b3c049e70834cf33790a28643ab058b507b35cBen Cheng DisplayFramesForCurrentContext (FILE *out, 5125b3c049e70834cf33790a28643ab058b507b35cBen Cheng FILE *err, 5225b3c049e70834cf33790a28643ab058b507b35cBen Cheng uint32_t first_frame, 5325b3c049e70834cf33790a28643ab058b507b35cBen Cheng uint32_t num_frames, 5425b3c049e70834cf33790a28643ab058b507b35cBen Cheng bool show_frame_info, 5525b3c049e70834cf33790a28643ab058b507b35cBen Cheng uint32_t num_frames_with_source, 5625b3c049e70834cf33790a28643ab058b507b35cBen Cheng uint32_t source_lines_before = 3, 5725b3c049e70834cf33790a28643ab058b507b35cBen Cheng uint32_t source_lines_after = 3); 5825b3c049e70834cf33790a28643ab058b507b35cBen Cheng 5925b3c049e70834cf33790a28643ab058b507b35cBen Cheng bool 6025b3c049e70834cf33790a28643ab058b507b35cBen Cheng DisplaySingleFrameForCurrentContext (FILE *out, 6125b3c049e70834cf33790a28643ab058b507b35cBen Cheng FILE *err, 6225b3c049e70834cf33790a28643ab058b507b35cBen Cheng lldb::SBFrame &frame, 6325b3c049e70834cf33790a28643ab058b507b35cBen Cheng bool show_frame_info, 6425b3c049e70834cf33790a28643ab058b507b35cBen Cheng bool show_source, 6525b3c049e70834cf33790a28643ab058b507b35cBen Cheng uint32_t source_lines_after, 6625b3c049e70834cf33790a28643ab058b507b35cBen Cheng uint32_t source_lines_before); 6725b3c049e70834cf33790a28643ab058b507b35cBen Cheng 6825b3c049e70834cf33790a28643ab058b507b35cBen Cheng void 6925b3c049e70834cf33790a28643ab058b507b35cBen Cheng StepOver (lldb::RunMode stop_other_threads = lldb::eOnlyDuringStepping); 7025b3c049e70834cf33790a28643ab058b507b35cBen Cheng 7125b3c049e70834cf33790a28643ab058b507b35cBen Cheng void 7225b3c049e70834cf33790a28643ab058b507b35cBen Cheng StepInto (lldb::RunMode stop_other_threads = lldb::eOnlyDuringStepping); 7325b3c049e70834cf33790a28643ab058b507b35cBen Cheng 7425b3c049e70834cf33790a28643ab058b507b35cBen Cheng void 7525b3c049e70834cf33790a28643ab058b507b35cBen Cheng StepOut (); 7625b3c049e70834cf33790a28643ab058b507b35cBen Cheng 7725b3c049e70834cf33790a28643ab058b507b35cBen Cheng void 7825b3c049e70834cf33790a28643ab058b507b35cBen Cheng StepInstruction(bool step_over); 7925b3c049e70834cf33790a28643ab058b507b35cBen Cheng 8025b3c049e70834cf33790a28643ab058b507b35cBen Cheng void 8125b3c049e70834cf33790a28643ab058b507b35cBen Cheng RunToAddress (lldb::addr_t addr); 8225b3c049e70834cf33790a28643ab058b507b35cBen Cheng 8325b3c049e70834cf33790a28643ab058b507b35cBen Cheng void 8425b3c049e70834cf33790a28643ab058b507b35cBen Cheng Backtrace (uint32_t num_frames = 0); 8525b3c049e70834cf33790a28643ab058b507b35cBen Cheng 8625b3c049e70834cf33790a28643ab058b507b35cBen Cheng uint32_t 8725b3c049e70834cf33790a28643ab058b507b35cBen Cheng GetNumFrames (); 8825b3c049e70834cf33790a28643ab058b507b35cBen Cheng 8925b3c049e70834cf33790a28643ab058b507b35cBen Cheng lldb::SBFrame 9025b3c049e70834cf33790a28643ab058b507b35cBen Cheng GetFrameAtIndex (uint32_t idx); 9125b3c049e70834cf33790a28643ab058b507b35cBen Cheng 9225b3c049e70834cf33790a28643ab058b507b35cBen Cheng lldb::SBProcess 9325b3c049e70834cf33790a28643ab058b507b35cBen Cheng GetProcess (); 9425b3c049e70834cf33790a28643ab058b507b35cBen Cheng 9525b3c049e70834cf33790a28643ab058b507b35cBen Cheng#ifndef SWIG 9625b3c049e70834cf33790a28643ab058b507b35cBen Cheng 9725b3c049e70834cf33790a28643ab058b507b35cBen Cheng const lldb::SBThread & 9825b3c049e70834cf33790a28643ab058b507b35cBen Cheng operator = (const lldb::SBThread &rhs); 9925b3c049e70834cf33790a28643ab058b507b35cBen Cheng 10025b3c049e70834cf33790a28643ab058b507b35cBen Cheng bool 10125b3c049e70834cf33790a28643ab058b507b35cBen Cheng operator == (const lldb::SBThread &rhs) const; 10225b3c049e70834cf33790a28643ab058b507b35cBen Cheng 10325b3c049e70834cf33790a28643ab058b507b35cBen Cheng bool 10425b3c049e70834cf33790a28643ab058b507b35cBen Cheng operator != (const lldb::SBThread &rhs) const; 10525b3c049e70834cf33790a28643ab058b507b35cBen Cheng 10625b3c049e70834cf33790a28643ab058b507b35cBen Cheng#endif 10725b3c049e70834cf33790a28643ab058b507b35cBen Cheng 10825b3c049e70834cf33790a28643ab058b507b35cBen Cheng 10925b3c049e70834cf33790a28643ab058b507b35cBen Chengprotected: 11025b3c049e70834cf33790a28643ab058b507b35cBen Cheng friend class SBBreakpoint; 11125b3c049e70834cf33790a28643ab058b507b35cBen Cheng friend class SBBreakpointLocation; 11225b3c049e70834cf33790a28643ab058b507b35cBen Cheng friend class SBFrame; 11325b3c049e70834cf33790a28643ab058b507b35cBen Cheng friend class SBProcess; 11425b3c049e70834cf33790a28643ab058b507b35cBen Cheng friend class SBDebugger; 11525b3c049e70834cf33790a28643ab058b507b35cBen Cheng friend class SBValue; 11625b3c049e70834cf33790a28643ab058b507b35cBen Cheng 11725b3c049e70834cf33790a28643ab058b507b35cBen Cheng lldb_private::Thread * 11825b3c049e70834cf33790a28643ab058b507b35cBen Cheng GetLLDBObjectPtr (); 11925b3c049e70834cf33790a28643ab058b507b35cBen Cheng 12025b3c049e70834cf33790a28643ab058b507b35cBen Cheng#ifndef SWIG 12125b3c049e70834cf33790a28643ab058b507b35cBen Cheng 12225b3c049e70834cf33790a28643ab058b507b35cBen Cheng const lldb_private::Thread * 12325b3c049e70834cf33790a28643ab058b507b35cBen Cheng operator->() const; 12425b3c049e70834cf33790a28643ab058b507b35cBen Cheng 12525b3c049e70834cf33790a28643ab058b507b35cBen Cheng const lldb_private::Thread & 12625b3c049e70834cf33790a28643ab058b507b35cBen Cheng operator*() const; 12725b3c049e70834cf33790a28643ab058b507b35cBen Cheng 12825b3c049e70834cf33790a28643ab058b507b35cBen Cheng 12925b3c049e70834cf33790a28643ab058b507b35cBen Cheng lldb_private::Thread * 13025b3c049e70834cf33790a28643ab058b507b35cBen Cheng operator->(); 13125b3c049e70834cf33790a28643ab058b507b35cBen Cheng 13225b3c049e70834cf33790a28643ab058b507b35cBen Cheng lldb_private::Thread & 13325b3c049e70834cf33790a28643ab058b507b35cBen Cheng operator*(); 13425b3c049e70834cf33790a28643ab058b507b35cBen Cheng 13525b3c049e70834cf33790a28643ab058b507b35cBen Cheng#endif 13625b3c049e70834cf33790a28643ab058b507b35cBen Cheng 13725b3c049e70834cf33790a28643ab058b507b35cBen Cheng SBThread (const lldb::ThreadSP& lldb_object_sp); 13825b3c049e70834cf33790a28643ab058b507b35cBen Cheng 13925b3c049e70834cf33790a28643ab058b507b35cBen Cheng void 14025b3c049e70834cf33790a28643ab058b507b35cBen Cheng SetThread (const lldb::ThreadSP& lldb_object_sp); 14125b3c049e70834cf33790a28643ab058b507b35cBen Cheng 14225b3c049e70834cf33790a28643ab058b507b35cBen Chengprivate: 14325b3c049e70834cf33790a28643ab058b507b35cBen Cheng //------------------------------------------------------------------ 14425b3c049e70834cf33790a28643ab058b507b35cBen Cheng // Classes that inherit from Thread can see and modify these 14525b3c049e70834cf33790a28643ab058b507b35cBen Cheng //------------------------------------------------------------------ 14625b3c049e70834cf33790a28643ab058b507b35cBen Cheng 14725b3c049e70834cf33790a28643ab058b507b35cBen Cheng lldb::ThreadSP m_lldb_object_sp; 14825b3c049e70834cf33790a28643ab058b507b35cBen Cheng}; 14925b3c049e70834cf33790a28643ab058b507b35cBen Cheng 15025b3c049e70834cf33790a28643ab058b507b35cBen Cheng} // namespace lldb 15125b3c049e70834cf33790a28643ab058b507b35cBen Cheng 15225b3c049e70834cf33790a28643ab058b507b35cBen Cheng#endif // LLDB_SBThread_h_ 15325b3c049e70834cf33790a28643ab058b507b35cBen Cheng