LLDB API Documentation

- Main Page
- Namespaces
- Classes
- Files

- File List

SBProcess.h
Go to the documentation of this file.
1 //===-- SBProcess.h ---------------------------------------------*- 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 #ifndef LLDB_SBProcess_h_
11 #define LLDB_SBProcess_h_
12
13 #include "lldb/API/SBDefines.h"
14 #include "lldb/API/SBError.h"
15 #include "lldb/API/SBTarget.h"
16 #include <stdio.h>
17
18 namespace lldb {
19
20 class SBEvent;
21
22 class SBProcess
23 {
24 public:
25 //------------------------------------------------------------------
26 /// Broadcaster event bits definitions.
27 //------------------------------------------------------------------
28 enum
29 {
30 eBroadcastBitStateChanged = (1 << 0),
31 eBroadcastBitInterrupt = (1 << 1),
32 eBroadcastBitSTDOUT = (1 << 2),
33 eBroadcastBitSTDERR = (1 << 3),
34 eBroadcastBitProfileData = (1 << 4)
35 };
36
37 SBProcess ();
38
39 SBProcess (const lldb::SBProcess& rhs);
40
41 const lldb::SBProcess&
42 operator = (const lldb::SBProcess& rhs);
43
44 SBProcess (const lldb::ProcessSP &process_sp);
45
46 ~SBProcess();
47
48 static const char *
49 GetBroadcasterClassName ();
50
51 const char *
52 GetPluginName ();
53
54 // DEPRECATED: use GetPluginName()
55 const char *
56 GetShortPluginName ();
57
58 void
59 Clear ();
60
61 bool
62 IsValid() const;
63
64 lldb::SBTarget
65 GetTarget() const;
66
67 lldb::ByteOrder
68 GetByteOrder() const;
69
70 size_t
71 PutSTDIN (const char *src, size_t src_len);
72
73 size_t
74 GetSTDOUT (char *dst, size_t dst_len) const;
75
76 size_t
77 GetSTDERR (char *dst, size_t dst_len) const;
78
79 size_t
80 GetAsyncProfileData(char *dst, size_t dst_len) const;
81
82 void
83 ReportEventState (const lldb::SBEvent &event, FILE *out) const;
84
85 void
86 AppendEventStateReport (const lldb::SBEvent &event, lldb::SBCommandReturnObject &result);
87
88 //------------------------------------------------------------------
89 /// Remote connection related functions. These will fail if the
90 /// process is not in eStateConnected. They are intended for use
91 /// when connecting to an externally managed debugserver instance.
92 //------------------------------------------------------------------
93 bool
94 RemoteAttachToProcessWithID (lldb::pid_t pid,
95 lldb::SBError& error);
96
97 bool
98 RemoteLaunch (char const **argv,
99 char const **envp,
100 const char *stdin_path,
101 const char *stdout_path,
102 const char *stderr_path,
103 const char *working_directory,
104 uint32_t launch_flags,
105 bool stop_at_entry,
106 lldb::SBError& error);
107
108 //------------------------------------------------------------------
109 // Thread related functions
110 //------------------------------------------------------------------
111 uint32_t
112 GetNumThreads ();
113
114 lldb::SBThread
115 GetThreadAtIndex (size_t index);
116
117 lldb::SBThread
118 GetThreadByID (lldb::tid_t sb_thread_id);
119
120 lldb::SBThread
121 GetThreadByIndexID (uint32_t index_id);
122
123 lldb::SBThread
124 GetSelectedThread () const;
125
126 //------------------------------------------------------------------
127 // Function for lazily creating a thread using the current OS
128 // plug-in. This function will be removed in the future when there
129 // are APIs to create SBThread objects through the interface and add
130 // them to the process through the SBProcess API.
131 //------------------------------------------------------------------
132 lldb::SBThread
133 CreateOSPluginThread (lldb::tid_t tid, lldb::addr_t context);
134
135 bool
136 SetSelectedThread (const lldb::SBThread &thread);
137
138 bool
139 SetSelectedThreadByID (lldb::tid_t tid);
140
141 bool
142 SetSelectedThreadByIndexID (uint32_t index_id);
143
144 //------------------------------------------------------------------
145 // Stepping related functions
146 //------------------------------------------------------------------
147
148 lldb::StateType
149 GetState ();
150
151 int
152 GetExitStatus ();
153
154 const char *
155 GetExitDescription ();
156
157 //------------------------------------------------------------------
158 /// Gets the process ID
159 ///
160 /// Returns the process identifier for the process as it is known
161 /// on the system on which the process is running. For unix systems
162 /// this is typically the same as if you called "getpid()" in the
163 /// process.
164 ///
165 /// @return
166 /// Returns LLDB_INVALID_PROCESS_ID if this object does not
167 /// contain a valid process object, or if the process has not
168 /// been launched. Returns a valid process ID if the process is
169 /// valid.
170 //------------------------------------------------------------------
171 lldb::pid_t
172 GetProcessID ();
173
174 //------------------------------------------------------------------
175 /// Gets the unique ID associated with this process object
176 ///
177 /// Unique IDs start at 1 and increment up with each new process
178 /// instance. Since starting a process on a system might always
179 /// create a process with the same process ID, there needs to be a
180 /// way to tell two process instances apart.
181 ///
182 /// @return
183 /// Returns a non-zero integer ID if this object contains a
184 /// valid process object, zero if this object does not contain
185 /// a valid process object.
186 //------------------------------------------------------------------
187 uint32_t
188 GetUniqueID();
189
190 uint32_t
191 GetAddressByteSize() const;
192
193 lldb::SBError
194 Destroy ();
195
196 lldb::SBError
197 Continue ();
198
199 lldb::SBError
200 Stop ();
201
202 lldb::SBError
203 Kill ();
204
205 lldb::SBError
206 Detach ();
207
208 lldb::SBError
209 Detach (bool keep_stopped);
210
211 lldb::SBError
212 Signal (int signal);
213
214 void
215 SendAsyncInterrupt();
216
217 uint32_t
218 GetStopID(bool include_expression_stops = false);
219
220 size_t
221 ReadMemory (addr_t addr, void *buf, size_t size, lldb::SBError &error);
222
223 size_t
224 WriteMemory (addr_t addr, const void *buf, size_t size, lldb::SBError &error);
225
226 size_t
227 ReadCStringFromMemory (addr_t addr, void *buf, size_t size, lldb::SBError &error);
228
229 uint64_t
230 ReadUnsignedFromMemory (addr_t addr, uint32_t byte_size, lldb::SBError &error);
231
232 lldb::addr_t
233 ReadPointerFromMemory (addr_t addr, lldb::SBError &error);
234
235 // Events
236 static lldb::StateType
237 GetStateFromEvent (const lldb::SBEvent &event);
238
239 static bool
240 GetRestartedFromEvent (const lldb::SBEvent &event);
241
242 static size_t
243 GetNumRestartedReasonsFromEvent (const lldb::SBEvent &event);
244
245 static const char *
246 GetRestartedReasonAtIndexFromEvent (const lldb::SBEvent &event, size_t idx);
247
248 static lldb::SBProcess
249 GetProcessFromEvent (const lldb::SBEvent &event);
250
251 static bool
252 EventIsProcessEvent (const lldb::SBEvent &event);
253
254 lldb::SBBroadcaster
255 GetBroadcaster () const;
256
257 static const char *
258 GetBroadcasterClass ();
259
260 bool
261 GetDescription (lldb::SBStream &description);
262
263 uint32_t
264 GetNumSupportedHardwareWatchpoints (lldb::SBError &error) const;
265
266 uint32_t
267 LoadImage (lldb::SBFileSpec &image_spec, lldb::SBError &error);
268
269 lldb::SBError
270 UnloadImage (uint32_t image_token);
271
272 protected:
273 friend class SBAddress;
274 friend class SBBreakpoint;
275 friend class SBBreakpointLocation;
276 friend class SBCommandInterpreter;
277 friend class SBDebugger;
278 friend class SBFunction;
279 friend class SBModule;
280 friend class SBTarget;
281 friend class SBThread;
282 friend class SBValue;
283
284 lldb::ProcessSP
285 GetSP() const;
286
287 void
288 SetSP (const lldb::ProcessSP &process_sp);
289
290 lldb::ProcessWP m_opaque_wp;
291 };
292
293 } // namespace lldb
294
295 #endif // LLDB_SBProcess_h_