blob: 6717090895420c459c3e90580b12bbbf7f319ffc [file] [log] [blame]
Johnny Chenc3fba812011-07-18 20:13:38 +00001//===-- SWIG Interface for SBThread -----------------------------*- 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
10namespace lldb {
11
12%feature("docstring",
13"Represents a thread of execution. SBProcess contains SBThread(s).
14
15SBThread supports frame iteration. For example (from test/python_api/
16lldbutil/iter/TestLLDBIterator.py),
17
18 from lldbutil import print_stacktrace
19 stopped_due_to_breakpoint = False
20 for thread in process:
21 if self.TraceOn():
22 print_stacktrace(thread)
23 ID = thread.GetThreadID()
24 if thread.GetStopReason() == lldb.eStopReasonBreakpoint:
25 stopped_due_to_breakpoint = True
26 for frame in thread:
27 self.assertTrue(frame.GetThread().GetThreadID() == ID)
28 if self.TraceOn():
29 print frame
30
31 self.assertTrue(stopped_due_to_breakpoint)
32
33See also SBProcess and SBFrame."
34) SBThread;
35class SBThread
36{
37public:
38 SBThread ();
39
40 SBThread (const lldb::SBThread &thread);
41
42 ~SBThread();
43
44 bool
45 IsValid() const;
46
47 void
48 Clear ();
49
50 lldb::StopReason
51 GetStopReason();
52
53 %feature("docstring", "
54 /// Get the number of words associated with the stop reason.
55 /// See also GetStopReasonDataAtIndex().
56 ") GetStopReasonDataCount;
57 size_t
58 GetStopReasonDataCount();
59
60 %feature("docstring", "
61 //--------------------------------------------------------------------------
62 /// Get information associated with a stop reason.
63 ///
64 /// Breakpoint stop reasons will have data that consists of pairs of
65 /// breakpoint IDs followed by the breakpoint location IDs (they always come
66 /// in pairs).
67 ///
68 /// Stop Reason Count Data Type
69 /// ======================== ===== =========================================
70 /// eStopReasonNone 0
71 /// eStopReasonTrace 0
72 /// eStopReasonBreakpoint N duple: {breakpoint id, location id}
73 /// eStopReasonWatchpoint N duple: {watchpoint id, location id}
74 /// eStopReasonSignal 1 unix signal number
75 /// eStopReasonException N exception data
76 /// eStopReasonPlanComplete 0
77 //--------------------------------------------------------------------------
78 ") GetStopReasonDataAtIndex;
79 uint64_t
80 GetStopReasonDataAtIndex(uint32_t idx);
81
82 size_t
83 GetStopDescription (char *dst, size_t dst_len);
84
85 lldb::tid_t
86 GetThreadID () const;
87
88 uint32_t
89 GetIndexID () const;
90
91 const char *
92 GetName () const;
93
94 const char *
95 GetQueueName() const;
96
97 void
98 StepOver (lldb::RunMode stop_other_threads = lldb::eOnlyDuringStepping);
99
100 void
101 StepInto (lldb::RunMode stop_other_threads = lldb::eOnlyDuringStepping);
102
103 void
104 StepOut ();
105
106 void
107 StepOutOfFrame (lldb::SBFrame &frame);
108
109 void
110 StepInstruction(bool step_over);
111
112 SBError
113 StepOverUntil (lldb::SBFrame &frame,
114 lldb::SBFileSpec &file_spec,
115 uint32_t line);
116
117 void
118 RunToAddress (lldb::addr_t addr);
119
120 %feature("docstring", "
121 //--------------------------------------------------------------------------
122 /// LLDB currently supports process centric debugging which means when any
123 /// thread in a process stops, all other threads are stopped. The Suspend()
124 /// call here tells our process to suspend a thread and not let it run when
125 /// the other threads in a process are allowed to run. So when
126 /// SBProcess::Continue() is called, any threads that aren't suspended will
127 /// be allowed to run. If any of the SBThread functions for stepping are
128 /// called (StepOver, StepInto, StepOut, StepInstruction, RunToAddres), the
129 /// thread will now be allowed to run and these funtions will simply return.
130 ///
131 /// Eventually we plan to add support for thread centric debugging where
132 /// each thread is controlled individually and each thread would broadcast
133 /// its state, but we haven't implemented this yet.
134 ///
135 /// Likewise the SBThread::Resume() call will again allow the thread to run
136 /// when the process is continued.
137 ///
138 /// Suspend() and Resume() functions are not currently reference counted, if
139 /// anyone has the need for them to be reference counted, please let us
140 /// know.
141 //--------------------------------------------------------------------------
142 ") Suspend;
143 bool
144 Suspend();
145
146 bool
147 Resume ();
148
149 bool
150 IsSuspended();
151
152 uint32_t
153 GetNumFrames ();
154
155 lldb::SBFrame
156 GetFrameAtIndex (uint32_t idx);
157
158 lldb::SBFrame
159 GetSelectedFrame ();
160
161 lldb::SBFrame
162 SetSelectedFrame (uint32_t frame_idx);
163
164 lldb::SBProcess
165 GetProcess ();
166
167 bool
168 GetDescription (lldb::SBStream &description) const;
169};
170
171} // namespace lldb