SBProcess.h revision 82560f25ae1b4a55c927df9ccf1bd1becc01b1c1
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
18namespace lldb {
19
20class SBEvent;
21
22class SBProcess
23{
24public:
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    };
35
36    SBProcess ();
37
38    SBProcess (const lldb::SBProcess& rhs);
39
40    const lldb::SBProcess&
41    operator = (const lldb::SBProcess& rhs);
42
43    SBProcess (const lldb::ProcessSP &process_sp);
44
45    ~SBProcess();
46
47    static const char *
48    GetBroadcasterClassName ();
49
50    void
51    Clear ();
52
53    bool
54    IsValid() const;
55
56    lldb::SBTarget
57    GetTarget() const;
58
59    lldb::ByteOrder
60    GetByteOrder() const;
61
62    size_t
63    PutSTDIN (const char *src, size_t src_len);
64
65    size_t
66    GetSTDOUT (char *dst, size_t dst_len) const;
67
68    size_t
69    GetSTDERR (char *dst, size_t dst_len) const;
70
71    void
72    ReportEventState (const lldb::SBEvent &event, FILE *out) const;
73
74    void
75    AppendEventStateReport (const lldb::SBEvent &event, lldb::SBCommandReturnObject &result);
76
77    //------------------------------------------------------------------
78    /// Remote connection related functions. These will fail if the
79    /// process is not in eStateConnected. They are intended for use
80    /// when connecting to an externally managed debugserver instance.
81    //------------------------------------------------------------------
82    bool
83    RemoteAttachToProcessWithID (lldb::pid_t pid,
84                                 lldb::SBError& error);
85
86    bool
87    RemoteLaunch (char const **argv,
88                  char const **envp,
89                  const char *stdin_path,
90                  const char *stdout_path,
91                  const char *stderr_path,
92                  const char *working_directory,
93                  uint32_t launch_flags,
94                  bool stop_at_entry,
95                  lldb::SBError& error);
96
97    //------------------------------------------------------------------
98    // Thread related functions
99    //------------------------------------------------------------------
100    uint32_t
101    GetNumThreads ();
102
103    lldb::SBThread
104    GetThreadAtIndex (size_t index);
105
106    lldb::SBThread
107    GetThreadByID (lldb::tid_t sb_thread_id);
108
109    lldb::SBThread
110    GetThreadByIndexID (uint32_t index_id);
111
112    lldb::SBThread
113    GetSelectedThread () const;
114
115    bool
116    SetSelectedThread (const lldb::SBThread &thread);
117
118    bool
119    SetSelectedThreadByID (uint32_t tid); // DEPRECATED
120
121    bool
122    SetSelectedThreadByID (lldb::tid_t tid);
123
124    bool
125    SetSelectedThreadByIndexID (uint32_t index_id);
126
127    //------------------------------------------------------------------
128    // Stepping related functions
129    //------------------------------------------------------------------
130
131    lldb::StateType
132    GetState ();
133
134    int
135    GetExitStatus ();
136
137    const char *
138    GetExitDescription ();
139
140    lldb::pid_t
141    GetProcessID ();
142
143    uint32_t
144    GetAddressByteSize() const;
145
146    lldb::SBError
147    Destroy ();
148
149    lldb::SBError
150    Continue ();
151
152    lldb::SBError
153    Stop ();
154
155    lldb::SBError
156    Kill ();
157
158    lldb::SBError
159    Detach ();
160
161    lldb::SBError
162    Signal (int signal);
163
164    void
165    SendAsyncInterrupt();
166
167    size_t
168    ReadMemory (addr_t addr, void *buf, size_t size, lldb::SBError &error);
169
170    size_t
171    WriteMemory (addr_t addr, const void *buf, size_t size, lldb::SBError &error);
172
173    size_t
174    ReadCStringFromMemory (addr_t addr, void *buf, size_t size, lldb::SBError &error);
175
176    uint64_t
177    ReadUnsignedFromMemory (addr_t addr, uint32_t byte_size, lldb::SBError &error);
178
179    lldb::addr_t
180    ReadPointerFromMemory (addr_t addr, lldb::SBError &error);
181
182    // Events
183    static lldb::StateType
184    GetStateFromEvent (const lldb::SBEvent &event);
185
186    static bool
187    GetRestartedFromEvent (const lldb::SBEvent &event);
188
189    static lldb::SBProcess
190    GetProcessFromEvent (const lldb::SBEvent &event);
191
192    static bool
193    EventIsProcessEvent (const lldb::SBEvent &event);
194
195    lldb::SBBroadcaster
196    GetBroadcaster () const;
197
198    static const char *
199    GetBroadcasterClass ();
200
201    bool
202    GetDescription (lldb::SBStream &description);
203
204    uint32_t
205    GetNumSupportedHardwareWatchpoints (lldb::SBError &error) const;
206
207    uint32_t
208    LoadImage (lldb::SBFileSpec &image_spec, lldb::SBError &error);
209
210    lldb::SBError
211    UnloadImage (uint32_t image_token);
212
213protected:
214    friend class SBAddress;
215    friend class SBBreakpoint;
216    friend class SBBreakpointLocation;
217    friend class SBCommandInterpreter;
218    friend class SBDebugger;
219    friend class SBFunction;
220    friend class SBModule;
221    friend class SBTarget;
222    friend class SBThread;
223    friend class SBValue;
224
225    lldb::ProcessSP
226    GetSP() const;
227
228    void
229    SetSP (const lldb::ProcessSP &process_sp);
230
231    lldb::ProcessWP m_opaque_wp;
232};
233
234}  // namespace lldb
235
236#endif  // LLDB_SBProcess_h_
237