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