blob: 762626df9ae066ecdad7d6c013d9d0d76b9d6ff3 [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}
Johnny Chenbcbefa82011-12-17 02:07:52 +000073 /// eStopReasonWatchpoint 1 watchpoint id
Johnny Chenc3fba812011-07-18 20:13:38 +000074 /// 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
Johnny Chen65f4fb02011-12-19 19:38:09 +000082 %feature("autodoc", "
83 Pass only an (int)length and expect to get a Python string describing the
84 stop reason.
85 ") GetStopDescription;
Johnny Chenc3fba812011-07-18 20:13:38 +000086 size_t
87 GetStopDescription (char *dst, size_t dst_len);
88
Jim Ingham1586d972011-12-17 01:35:57 +000089 SBValue
90 GetStopReturnValue ();
91
Johnny Chenc3fba812011-07-18 20:13:38 +000092 lldb::tid_t
93 GetThreadID () const;
94
95 uint32_t
96 GetIndexID () const;
97
98 const char *
99 GetName () const;
100
101 const char *
102 GetQueueName() const;
103
104 void
105 StepOver (lldb::RunMode stop_other_threads = lldb::eOnlyDuringStepping);
106
107 void
108 StepInto (lldb::RunMode stop_other_threads = lldb::eOnlyDuringStepping);
109
110 void
111 StepOut ();
112
113 void
114 StepOutOfFrame (lldb::SBFrame &frame);
115
116 void
117 StepInstruction(bool step_over);
118
119 SBError
120 StepOverUntil (lldb::SBFrame &frame,
121 lldb::SBFileSpec &file_spec,
122 uint32_t line);
123
124 void
125 RunToAddress (lldb::addr_t addr);
126
127 %feature("docstring", "
128 //--------------------------------------------------------------------------
129 /// LLDB currently supports process centric debugging which means when any
130 /// thread in a process stops, all other threads are stopped. The Suspend()
131 /// call here tells our process to suspend a thread and not let it run when
132 /// the other threads in a process are allowed to run. So when
133 /// SBProcess::Continue() is called, any threads that aren't suspended will
134 /// be allowed to run. If any of the SBThread functions for stepping are
135 /// called (StepOver, StepInto, StepOut, StepInstruction, RunToAddres), the
136 /// thread will now be allowed to run and these funtions will simply return.
137 ///
138 /// Eventually we plan to add support for thread centric debugging where
139 /// each thread is controlled individually and each thread would broadcast
140 /// its state, but we haven't implemented this yet.
141 ///
142 /// Likewise the SBThread::Resume() call will again allow the thread to run
143 /// when the process is continued.
144 ///
145 /// Suspend() and Resume() functions are not currently reference counted, if
146 /// anyone has the need for them to be reference counted, please let us
147 /// know.
148 //--------------------------------------------------------------------------
149 ") Suspend;
150 bool
151 Suspend();
152
153 bool
154 Resume ();
155
156 bool
157 IsSuspended();
158
159 uint32_t
160 GetNumFrames ();
161
162 lldb::SBFrame
163 GetFrameAtIndex (uint32_t idx);
164
165 lldb::SBFrame
166 GetSelectedFrame ();
167
168 lldb::SBFrame
169 SetSelectedFrame (uint32_t frame_idx);
170
171 lldb::SBProcess
172 GetProcess ();
173
174 bool
175 GetDescription (lldb::SBStream &description) const;
176};
177
178} // namespace lldb