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