//===-- SWIG Interface for SBProcess ----------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// namespace lldb { %feature("docstring", "Represents the process associated with the target program. SBProcess supports thread iteration. For example (from test/lldbutil.py), # ================================================== # Utility functions related to Threads and Processes # ================================================== def get_stopped_threads(process, reason): '''Returns the thread(s) with the specified stop reason in a list. The list can be empty if no such thread exists. ''' threads = [] for t in process: if t.GetStopReason() == reason: threads.append(t) return threads ... " ) SBProcess; class SBProcess { public: //------------------------------------------------------------------ /// Broadcaster event bits definitions. //------------------------------------------------------------------ enum { eBroadcastBitStateChanged = (1 << 0), eBroadcastBitInterrupt = (1 << 1), eBroadcastBitSTDOUT = (1 << 2), eBroadcastBitSTDERR = (1 << 3) }; SBProcess (); SBProcess (const lldb::SBProcess& rhs); ~SBProcess(); void Clear (); bool IsValid() const; lldb::SBTarget GetTarget() const; lldb::ByteOrder GetByteOrder() const; size_t PutSTDIN (const char *src, size_t src_len); size_t GetSTDOUT (char *dst, size_t dst_len) const; size_t GetSTDERR (char *dst, size_t dst_len) const; void ReportEventState (const lldb::SBEvent &event, FILE *out) const; void AppendEventStateReport (const lldb::SBEvent &event, lldb::SBCommandReturnObject &result); %feature("docstring", " //------------------------------------------------------------------ /// Remote connection related functions. These will fail if the /// process is not in eStateConnected. They are intended for use /// when connecting to an externally managed debugserver instance. //------------------------------------------------------------------ ") RemoteAttachToProcessWithID; bool RemoteAttachToProcessWithID (lldb::pid_t pid, lldb::SBError& error); %feature("docstring", "See SBTarget.Launch for argument description and usage." ) RemoteLaunch; bool RemoteLaunch (char const **argv, char const **envp, const char *stdin_path, const char *stdout_path, const char *stderr_path, const char *working_directory, uint32_t launch_flags, bool stop_at_entry, lldb::SBError& error); //------------------------------------------------------------------ // Thread related functions //------------------------------------------------------------------ uint32_t GetNumThreads (); lldb::SBThread GetThreadAtIndex (size_t index); lldb::SBThread GetThreadByID (lldb::tid_t sb_thread_id); lldb::SBThread GetSelectedThread () const; bool SetSelectedThread (const lldb::SBThread &thread); bool SetSelectedThreadByID (uint32_t tid); //------------------------------------------------------------------ // Stepping related functions //------------------------------------------------------------------ lldb::StateType GetState (); int GetExitStatus (); const char * GetExitDescription (); lldb::pid_t GetProcessID (); uint32_t GetAddressByteSize() const; %feature("docstring", " Kills the process and shuts down all threads that were spawned to track and monitor process. ") Destroy; lldb::SBError Destroy (); lldb::SBError Continue (); lldb::SBError Stop (); %feature("docstring", "Same as Destroy(self).") Destroy; lldb::SBError Kill (); lldb::SBError Detach (); %feature("docstring", "Sends the process a unix signal.") Signal; lldb::SBError Signal (int signal); %feature("autodoc", " Reads memory from the current process's address space and removes any traps that may have been inserted into the memory. It returns the byte buffer in a Python string. Example: # Read 4 bytes from address 'addr' and assume error.Success() is True. content = process.ReadMemory(addr, 4, error) # Use 'ascii' encoding as each byte of 'content' is within [0..255]. new_bytes = bytearray(content, 'ascii') ") ReadMemory; size_t ReadMemory (addr_t addr, void *buf, size_t size, lldb::SBError &error); %feature("autodoc", " Writes memory to the current process's address space and maintains any traps that might be present due to software breakpoints. Example: # Create a Python string from the byte array. new_value = str(bytes) result = process.WriteMemory(addr, new_value, error) if not error.Success() or result != len(bytes): print 'SBProcess.WriteMemory() failed!' ") WriteMemory; size_t WriteMemory (addr_t addr, const void *buf, size_t size, lldb::SBError &error); // Events static lldb::StateType GetStateFromEvent (const lldb::SBEvent &event); static bool GetRestartedFromEvent (const lldb::SBEvent &event); static lldb::SBProcess GetProcessFromEvent (const lldb::SBEvent &event); lldb::SBBroadcaster GetBroadcaster () const; bool GetDescription (lldb::SBStream &description); uint32_t LoadImage (lldb::SBFileSpec &image_spec, lldb::SBError &error); lldb::SBError UnloadImage (uint32_t image_token); }; } // namespace lldb