SBProcess.h revision 538eb82a89a68dbc57251915080bd5152b333978
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#ifndef SWIG 41 const lldb::SBProcess& 42 operator = (const lldb::SBProcess& rhs); 43#endif 44 45 ~SBProcess(); 46 47 void 48 Clear (); 49 50 bool 51 IsValid() const; 52 53 lldb::SBTarget 54 GetTarget() const; 55 56 size_t 57 PutSTDIN (const char *src, size_t src_len); 58 59 size_t 60 GetSTDOUT (char *dst, size_t dst_len) const; 61 62 size_t 63 GetSTDERR (char *dst, size_t dst_len) const; 64 65 void 66 ReportEventState (const lldb::SBEvent &event, FILE *out) const; 67 68 void 69 AppendEventStateReport (const lldb::SBEvent &event, lldb::SBCommandReturnObject &result); 70 71 //------------------------------------------------------------------ 72 // Thread related functions 73 //------------------------------------------------------------------ 74 uint32_t 75 GetNumThreads (); 76 77 lldb::SBThread 78 GetThreadAtIndex (size_t index); 79 80 lldb::SBThread 81 GetThreadByID (lldb::tid_t sb_thread_id); 82 83 lldb::SBThread 84 GetSelectedThread () const; 85 86 bool 87 SetSelectedThread (const lldb::SBThread &thread); 88 89 bool 90 SetSelectedThreadByID (uint32_t tid); 91 92 //------------------------------------------------------------------ 93 // Stepping related functions 94 //------------------------------------------------------------------ 95 96 lldb::StateType 97 GetState (); 98 99 int 100 GetExitStatus (); 101 102 const char * 103 GetExitDescription (); 104 105 lldb::pid_t 106 GetProcessID (); 107 108 uint32_t 109 GetAddressByteSize() const; 110 111 lldb::SBError 112 Destroy (); 113 114 lldb::pid_t 115 AttachByPID (lldb::pid_t pid); // DEPRECATED 116 117 // DEPRECATED: relocated to "SBProcess SBTarget::AttachToProcess (lldb::pid_t pid, lldb::SBError& error)" 118 lldb::SBError 119 Attach (lldb::pid_t pid); 120 121 // DEPRECATED: relocated to "SBProcess SBTarget::AttachToProcess (const char *name, bool wait_for_launch, lldb::SBError& error)" 122 lldb::SBError 123 AttachByName (const char *name, bool wait_for_launch); 124 125 lldb::SBError 126 Continue (); 127 128 lldb::SBError 129 Stop (); 130 131 lldb::SBError 132 Kill (); 133 134 lldb::SBError 135 Detach (); 136 137 lldb::SBError 138 Signal (int signal); 139 140 size_t 141 ReadMemory (addr_t addr, void *buf, size_t size, lldb::SBError &error); 142 143 size_t 144 WriteMemory (addr_t addr, const void *buf, size_t size, lldb::SBError &error); 145 146 // Events 147 static lldb::StateType 148 GetStateFromEvent (const lldb::SBEvent &event); 149 150 static bool 151 GetRestartedFromEvent (const lldb::SBEvent &event); 152 153 static lldb::SBProcess 154 GetProcessFromEvent (const lldb::SBEvent &event); 155 156 lldb::SBBroadcaster 157 GetBroadcaster () const; 158 159 bool 160 GetDescription (lldb::SBStream &description); 161 162 uint32_t 163 LoadImage (lldb::SBFileSpec &image_spec, lldb::SBError &error); 164 165 lldb::SBError 166 UnloadImage (uint32_t image_token); 167 168protected: 169 friend class SBAddress; 170 friend class SBBreakpoint; 171 friend class SBBreakpointLocation; 172 friend class SBCommandInterpreter; 173 friend class SBDebugger; 174 friend class SBFunction; 175 friend class SBTarget; 176 friend class SBThread; 177 friend class SBValue; 178 179#ifndef SWIG 180 181 lldb_private::Process * 182 operator->() const; 183 184 // Mimic shared pointer... 185 lldb_private::Process * 186 get() const; 187 188#endif 189 190 191 SBProcess (const lldb::ProcessSP &process_sp); 192 193 void 194 SetProcess (const lldb::ProcessSP &process_sp); 195 196 lldb::ProcessSP m_opaque_sp; 197}; 198 199} // namespace lldb 200 201#endif // LLDB_SBProcess_h_ 202