<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>lldb.SBProcess</title>
  <link rel="stylesheet" href="epydoc.css" type="text/css" />
  <script type="text/javascript" src="epydoc.js"></script>
</head>

<body bgcolor="white" text="black" link="blue" vlink="#204080"
      alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Project homepage -->
      <th class="navbar" align="right" width="100%">
        <table border="0" cellpadding="0" cellspacing="0">
          <tr><th class="navbar" align="center"
            ><a class="navbar" target="_top" href="http://lldb.llvm.org">LLDB python API</a></th>
          </tr></table></th>
  </tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
  <tr valign="top">
    <td width="100%">
      <span class="breadcrumbs">
        <a href="lldb-module.html">Package&nbsp;lldb</a> ::
        Class&nbsp;SBProcess
      </span>
    </td>
    <td>
      <table cellpadding="0" cellspacing="0">
        <!-- hide/show private -->
        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
        <tr><td align="right"><span class="options"
            >[<a href="frames.html" target="_top">frames</a
            >]&nbsp;|&nbsp;<a href="lldb.SBProcess-class.html"
            target="_top">no&nbsp;frames</a>]</span></td></tr>
      </table>
    </td>
  </tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class SBProcess</h1><p class="nomargin-top"><span class="codelink"><a href="lldb-pysrc.html#SBProcess">source&nbsp;code</a></span></p>
<center>
<center>  <map id="uml_class_diagram_for_lldb_sbp_4" name="uml_class_diagram_for_lldb_sbp_4">
<area shape="rect" id="node1_28" href="lldb.SBProcess-class.html#__swig_setmethods__" title="lldb.SBProcess.__swig_setmethods__" alt="" coords="17,31,197,51"/>
<area shape="rect" id="node1_29" href="lldb.SBProcess-class.html#__swig_getmethods__" title="lldb.SBProcess.__swig_getmethods__" alt="" coords="17,51,197,71"/>
<area shape="rect" id="node1_30" href="lldb.SBProcess-class.html#eBroadcastBitStateChanged" title="lldb.SBProcess.eBroadcastBitStateChanged" alt="" coords="17,71,197,91"/>
<area shape="rect" id="node1_31" href="lldb.SBProcess-class.html#eBroadcastBitInterrupt" title="lldb.SBProcess.eBroadcastBitInterrupt" alt="" coords="17,91,197,111"/>
<area shape="rect" id="node1_32" href="lldb.SBProcess-class.html#eBroadcastBitSTDOUT" title="lldb.SBProcess.eBroadcastBitSTDOUT" alt="" coords="17,111,197,131"/>
<area shape="rect" id="node1_33" href="lldb.SBProcess-class.html#eBroadcastBitSTDERR" title="lldb.SBProcess.eBroadcastBitSTDERR" alt="" coords="17,131,197,151"/>
<area shape="rect" id="node1_34" href="lldb.SBProcess-class.html#eBroadcastBitProfileData" title="lldb.SBProcess.eBroadcastBitProfileData" alt="" coords="17,151,197,171"/>
<area shape="rect" id="node1_35" href="lldb.SBProcess-class.html#eBroadcastBitStructuredData" title="lldb.SBProcess.eBroadcastBitStructuredData" alt="" coords="17,171,197,191"/>
<area shape="rect" id="node1_36" href="lldb.SBProcess.threads_access-class.html" title="A helper object that will lazily hand out thread for a process when &#160;supplied an index." alt="" coords="17,191,197,211"/>
<area shape="rect" id="node1_37" href="lldb.SBProcess-class.html#broadcaster" title="A read only property that an lldb object that represents the broadcaster &#160;(lldb.SBBroadcaster) for this process." alt="" coords="17,211,197,231"/>
<area shape="rect" id="node1_38" href="lldb.SBProcess-class.html#exit_description" title="A read only property that returns an exit description as a string of this &#160;process when the process state is lldb.eStateExited." alt="" coords="17,231,197,251"/>
<area shape="rect" id="node1_39" href="lldb.SBProcess-class.html#exit_state" title="A read only property that returns an exit status as an integer of this &#160;process when the process state is lldb.eStateExited." alt="" coords="17,251,197,271"/>
<area shape="rect" id="node1_40" href="lldb.SBProcess-class.html#id" title="A read only property that returns the process ID as an integer." alt="" coords="17,271,197,291"/>
<area shape="rect" id="node1_41" href="lldb.SBProcess-class.html#threads" title="A read only property that returns a list() of lldb.SBThread objects for &#160;this process." alt="" coords="17,311,197,331"/>
<area shape="rect" id="node1_42" href="lldb.SBProcess-class.html#__setattr__" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,333,197,353"/>
<area shape="rect" id="node1_43" href="lldb.SBProcess-class.html#__getattr__" title="lldb.SBProcess.__getattr__" alt="" coords="17,353,197,373"/>
<area shape="rect" id="node1_44" href="lldb.SBProcess-class.html#__repr__" title="repr(x)" alt="" coords="17,373,197,393"/>
<area shape="rect" id="node1_45" href="lldb.SBProcess-class.html#__iter__" title="lldb.SBProcess.__iter__" alt="" coords="17,393,197,413"/>
<area shape="rect" id="node1_46" href="lldb.SBProcess-class.html#__len__" title="lldb.SBProcess.__len__" alt="" coords="17,413,197,433"/>
<area shape="rect" id="node1_47" href="lldb.SBProcess-class.html#__init__" title="__init__(lldb::SBProcess self) &#45;&gt; SBProcess __init__(lldb::SBProcess self, &#160;SBProcess rhs) &#45;&gt; SBProcess" alt="" coords="17,433,197,453"/>
<area shape="rect" id="node1_48" href="lldb.SBProcess-class.html#__swig_destroy__" title="delete_SBProcess(SBProcess self)" alt="" coords="17,453,197,473"/>
<area shape="rect" id="node1_49" href="lldb.SBProcess-class.html#__del__" title="lldb.SBProcess.__del__" alt="" coords="17,473,197,493"/>
<area shape="rect" id="node1_50" href="lldb.SBProcess-class.html#GetBroadcasterClassName" title="lldb.SBProcess.GetBroadcasterClassName" alt="" coords="17,493,197,513"/>
<area shape="rect" id="node1_51" href="lldb.SBProcess-class.html#GetPluginName" title="GetPluginName(SBProcess self) &#45;&gt; str const *" alt="" coords="17,513,197,533"/>
<area shape="rect" id="node1_52" href="lldb.SBProcess-class.html#GetShortPluginName" title="GetShortPluginName(SBProcess self) &#45;&gt; str const *" alt="" coords="17,533,197,553"/>
<area shape="rect" id="node1_53" href="lldb.SBProcess-class.html#Clear" title="Clear(SBProcess self)" alt="" coords="17,553,197,573"/>
<area shape="rect" id="node1_54" href="lldb.SBProcess-class.html#__nonzero__" title="lldb.SBProcess.__nonzero__" alt="" coords="17,573,197,593"/>
<area shape="rect" id="node1_55" href="lldb.SBProcess-class.html#__str__" title="__str__(SBProcess self) &#45;&gt; PyObject *" alt="" coords="17,613,197,633"/>
<area shape="rect" id="node1" href="lldb.SBProcess-class.html" title="Represents the process associated with the target program." alt="" coords="5,5,209,640"/>
</map>
  <img src="uml_class_diagram_for_lldb_sbp_4.gif" alt='' usemap="#uml_class_diagram_for_lldb_sbp_4" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
<pre class="literalblock">

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

...

</pre>

<!-- ==================== NESTED CLASSES ==================== -->
<a name="section-NestedClasses"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Nested Classes</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-NestedClasses"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBProcess.threads_access-class.html" class="summary-name">threads_access</a><br />
      A helper object that will lazily hand out thread for a process when
        supplied an index.
    </td>
  </tr>
</table>
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Instance Methods</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-InstanceMethods"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBProcess-class.html#__setattr__" class="summary-sig-name">__setattr__</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">name</span>,
        <span class="summary-sig-arg">value</span>)</span><br />
      x.__setattr__('name', value) &lt;==&gt; x.name = value</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.__setattr__">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="__getattr__"></a><span class="summary-sig-name">__getattr__</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">name</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.__getattr__">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBProcess-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">self</span>)</span><br />
      repr(x)</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#_swig_repr">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="__iter__"></a><span class="summary-sig-name">__iter__</span>(<span class="summary-sig-arg">self</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.__iter__">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="__len__"></a><span class="summary-sig-name">__len__</span>(<span class="summary-sig-arg">self</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.__len__">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBProcess-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      __init__(lldb::SBProcess self) -&gt; SBProcess 
      __init__(lldb::SBProcess self, SBProcess rhs) -&gt; SBProcess</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.__init__">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="__swig_destroy__"></a><span class="summary-sig-name">__swig_destroy__</span>(<span class="summary-sig-arg">...</span>)</span><br />
      delete_SBProcess(SBProcess self)</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="__del__"></a><span class="summary-sig-name">__del__</span>(<span class="summary-sig-arg">self</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.__del__">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetPluginName"></a><span class="summary-sig-name">GetPluginName</span>(<span class="summary-sig-arg">self</span>)</span><br />
      GetPluginName(SBProcess self) -&gt; str const *</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetPluginName">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetShortPluginName"></a><span class="summary-sig-name">GetShortPluginName</span>(<span class="summary-sig-arg">self</span>)</span><br />
      GetShortPluginName(SBProcess self) -&gt; str const *</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetShortPluginName">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="Clear"></a><span class="summary-sig-name">Clear</span>(<span class="summary-sig-arg">self</span>)</span><br />
      Clear(SBProcess self)</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.Clear">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="__nonzero__"></a><span class="summary-sig-name">__nonzero__</span>(<span class="summary-sig-arg">self</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.__nonzero__">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="IsValid"></a><span class="summary-sig-name">IsValid</span>(<span class="summary-sig-arg">self</span>)</span><br />
      IsValid(SBProcess self) -&gt; bool</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.IsValid">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetTarget"></a><span class="summary-sig-name">GetTarget</span>(<span class="summary-sig-arg">self</span>)</span><br />
      GetTarget(SBProcess self) -&gt; SBTarget</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetTarget">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetByteOrder"></a><span class="summary-sig-name">GetByteOrder</span>(<span class="summary-sig-arg">self</span>)</span><br />
      GetByteOrder(SBProcess self) -&gt; lldb::ByteOrder</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetByteOrder">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBProcess-class.html#PutSTDIN" class="summary-sig-name">PutSTDIN</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      Writes data into the current process's stdin.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.PutSTDIN">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBProcess-class.html#GetSTDOUT" class="summary-sig-name">GetSTDOUT</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      Reads data from the current process's stdout stream.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetSTDOUT">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBProcess-class.html#GetSTDERR" class="summary-sig-name">GetSTDERR</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      Reads data from the current process's stderr stream.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetSTDERR">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetAsyncProfileData"></a><span class="summary-sig-name">GetAsyncProfileData</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      GetAsyncProfileData(SBProcess self, str * dst) -&gt; size_t</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetAsyncProfileData">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="ReportEventState"></a><span class="summary-sig-name">ReportEventState</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      ReportEventState(SBProcess self, SBEvent event, FILE * out)</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.ReportEventState">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="AppendEventStateReport"></a><span class="summary-sig-name">AppendEventStateReport</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      AppendEventStateReport(SBProcess self, SBEvent event, 
      SBCommandReturnObject result)</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.AppendEventStateReport">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBProcess-class.html#RemoteAttachToProcessWithID" class="summary-sig-name">RemoteAttachToProcessWithID</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      RemoteAttachToProcessWithID(SBProcess self, lldb::pid_t pid, SBError 
      error) -&gt; bool</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.RemoteAttachToProcessWithID">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBProcess-class.html#RemoteLaunch" class="summary-sig-name">RemoteLaunch</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      RemoteLaunch(SBProcess self, str const ** argv, str const ** envp, str const * stdin_path, str const * stdout_path, 
    str const * stderr_path, str const * working_directory, uint32_t launch_flags, 
    bool stop_at_entry, SBError error) -&gt; bool</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.RemoteLaunch">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetNumThreads"></a><span class="summary-sig-name">GetNumThreads</span>(<span class="summary-sig-arg">self</span>)</span><br />
      GetNumThreads(SBProcess self) -&gt; uint32_t</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetNumThreads">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBProcess-class.html#GetThreadAtIndex" class="summary-sig-name">GetThreadAtIndex</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      Returns the INDEX'th thread from the list of current threads.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetThreadAtIndex">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetThreadByID"></a><span class="summary-sig-name">GetThreadByID</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      Returns the thread with the given thread ID.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetThreadByID">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetThreadByIndexID"></a><span class="summary-sig-name">GetThreadByIndexID</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      Returns the thread with the given thread IndexID.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetThreadByIndexID">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetSelectedThread"></a><span class="summary-sig-name">GetSelectedThread</span>(<span class="summary-sig-arg">self</span>)</span><br />
      Returns the currently selected thread.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetSelectedThread">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="CreateOSPluginThread"></a><span class="summary-sig-name">CreateOSPluginThread</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      Lazily create a thread on demand through the current OperatingSystem 
      plug-in, if the current OperatingSystem plug-in supports it.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.CreateOSPluginThread">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="SetSelectedThread"></a><span class="summary-sig-name">SetSelectedThread</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      SetSelectedThread(SBProcess self, SBThread thread) -&gt; bool</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.SetSelectedThread">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="SetSelectedThreadByID"></a><span class="summary-sig-name">SetSelectedThreadByID</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      SetSelectedThreadByID(SBProcess self, lldb::tid_t tid) -&gt; bool</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.SetSelectedThreadByID">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="SetSelectedThreadByIndexID"></a><span class="summary-sig-name">SetSelectedThreadByIndexID</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      SetSelectedThreadByIndexID(SBProcess self, uint32_t index_id) -&gt; 
      bool</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.SetSelectedThreadByIndexID">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetNumQueues"></a><span class="summary-sig-name">GetNumQueues</span>(<span class="summary-sig-arg">self</span>)</span><br />
      GetNumQueues(SBProcess self) -&gt; uint32_t</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetNumQueues">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetQueueAtIndex"></a><span class="summary-sig-name">GetQueueAtIndex</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      GetQueueAtIndex(SBProcess self, uint32_t index) -&gt; SBQueue</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetQueueAtIndex">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetState"></a><span class="summary-sig-name">GetState</span>(<span class="summary-sig-arg">self</span>)</span><br />
      GetState(SBProcess self) -&gt; lldb::StateType</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetState">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetExitStatus"></a><span class="summary-sig-name">GetExitStatus</span>(<span class="summary-sig-arg">self</span>)</span><br />
      GetExitStatus(SBProcess self) -&gt; int</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetExitStatus">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetExitDescription"></a><span class="summary-sig-name">GetExitDescription</span>(<span class="summary-sig-arg">self</span>)</span><br />
      GetExitDescription(SBProcess self) -&gt; str const *</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetExitDescription">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetProcessID"></a><span class="summary-sig-name">GetProcessID</span>(<span class="summary-sig-arg">self</span>)</span><br />
      Returns the process ID of the process.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetProcessID">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBProcess-class.html#GetUniqueID" class="summary-sig-name">GetUniqueID</a>(<span class="summary-sig-arg">self</span>)</span><br />
      Returns an integer ID that is guaranteed to be unique across all 
      process instances.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetUniqueID">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetAddressByteSize"></a><span class="summary-sig-name">GetAddressByteSize</span>(<span class="summary-sig-arg">self</span>)</span><br />
      GetAddressByteSize(SBProcess self) -&gt; uint32_t</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetAddressByteSize">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBProcess-class.html#Destroy" class="summary-sig-name">Destroy</a>(<span class="summary-sig-arg">self</span>)</span><br />
      Destroy(SBProcess self) -&gt; SBError</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.Destroy">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="Continue"></a><span class="summary-sig-name">Continue</span>(<span class="summary-sig-arg">self</span>)</span><br />
      Continue(SBProcess self) -&gt; SBError</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.Continue">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="Stop"></a><span class="summary-sig-name">Stop</span>(<span class="summary-sig-arg">self</span>)</span><br />
      Stop(SBProcess self) -&gt; SBError</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.Stop">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="Kill"></a><span class="summary-sig-name">Kill</span>(<span class="summary-sig-arg">self</span>)</span><br />
      Kill(SBProcess self) -&gt; SBError</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.Kill">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="Detach"></a><span class="summary-sig-name">Detach</span>(<span class="summary-sig-arg">self</span>)</span><br />
      Detach(SBProcess self) -&gt; SBError</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.Detach">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBProcess-class.html#Signal" class="summary-sig-name">Signal</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      Signal(SBProcess self, int signal) -&gt; SBError</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.Signal">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetUnixSignals"></a><span class="summary-sig-name">GetUnixSignals</span>(<span class="summary-sig-arg">self</span>)</span><br />
      GetUnixSignals(SBProcess self) -&gt; SBUnixSignals</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetUnixSignals">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBProcess-class.html#GetStopID" class="summary-sig-name">GetStopID</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">include_expression_stops</span>=<span class="summary-sig-default">False</span>)</span><br />
      GetStopID(SBProcess self, bool include_expression_stops=False) -&gt; 
      uint32_t GetStopID(SBProcess self) -&gt; uint32_t</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetStopID">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="SendAsyncInterrupt"></a><span class="summary-sig-name">SendAsyncInterrupt</span>(<span class="summary-sig-arg">self</span>)</span><br />
      SendAsyncInterrupt(SBProcess self)</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.SendAsyncInterrupt">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBProcess-class.html#ReadMemory" class="summary-sig-name">ReadMemory</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      Reads memory from the current process's address space and removes any
      traps that may have been inserted into the memory.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.ReadMemory">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBProcess-class.html#WriteMemory" class="summary-sig-name">WriteMemory</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      Writes memory to the current process's address space and maintains any
traps that might be present due to software breakpoints.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.WriteMemory">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBProcess-class.html#ReadCStringFromMemory" class="summary-sig-name">ReadCStringFromMemory</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      Reads a NULL terminated C string from the current process's address space.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.ReadCStringFromMemory">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBProcess-class.html#ReadUnsignedFromMemory" class="summary-sig-name">ReadUnsignedFromMemory</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      Reads an unsigned integer from memory given a byte size and an address.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.ReadUnsignedFromMemory">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBProcess-class.html#ReadPointerFromMemory" class="summary-sig-name">ReadPointerFromMemory</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      Reads a pointer from memory from an address and returns the value.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.ReadPointerFromMemory">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetBroadcaster"></a><span class="summary-sig-name">GetBroadcaster</span>(<span class="summary-sig-arg">self</span>)</span><br />
      GetBroadcaster(SBProcess self) -&gt; SBBroadcaster</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetBroadcaster">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetDescription"></a><span class="summary-sig-name">GetDescription</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      GetDescription(SBProcess self, SBStream description) -&gt; bool</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetDescription">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetNumSupportedHardwareWatchpoints"></a><span class="summary-sig-name">GetNumSupportedHardwareWatchpoints</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      GetNumSupportedHardwareWatchpoints(SBProcess self, SBError error) 
      -&gt; uint32_t</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetNumSupportedHardwareWatchpoints">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="LoadImage"></a><span class="summary-sig-name">LoadImage</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      LoadImage(SBProcess self, SBFileSpec image_spec, SBError error) -&gt;
      uint32_t</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.LoadImage">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="UnloadImage"></a><span class="summary-sig-name">UnloadImage</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      UnloadImage(SBProcess self, uint32_t image_token) -&gt; SBError</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.UnloadImage">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="SendEventData"></a><span class="summary-sig-name">SendEventData</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      SendEventData(SBProcess self, str const * event_data) -&gt; SBError</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.SendEventData">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBProcess-class.html#GetNumExtendedBacktraceTypes" class="summary-sig-name">GetNumExtendedBacktraceTypes</a>(<span class="summary-sig-arg">self</span>)</span><br />
      Return the number of different thread-origin extended backtraces this
      process can support as a uint32_t.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetNumExtendedBacktraceTypes">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetExtendedBacktraceTypeAtIndex"></a><span class="summary-sig-name">GetExtendedBacktraceTypeAtIndex</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      Takes an index argument, returns the name of one of the thread-origin
      extended backtrace methods as a str.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetExtendedBacktraceTypeAtIndex">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetHistoryThreads"></a><span class="summary-sig-name">GetHistoryThreads</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      GetHistoryThreads(SBProcess self, lldb::addr_t addr) -&gt; 
      SBThreadCollection</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetHistoryThreads">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="IsInstrumentationRuntimePresent"></a><span class="summary-sig-name">IsInstrumentationRuntimePresent</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      IsInstrumentationRuntimePresent(SBProcess self, 
      lldb::InstrumentationRuntimeType type) -&gt; bool</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.IsInstrumentationRuntimePresent">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="SaveCore"></a><span class="summary-sig-name">SaveCore</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      SaveCore(SBProcess self, str const * file_name) -&gt; SBError</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.SaveCore">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetMemoryRegionInfo"></a><span class="summary-sig-name">GetMemoryRegionInfo</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      GetMemoryRegionInfo(SBProcess self, lldb::addr_t load_addr, 
      SBMemoryRegionInfo region_info) -&gt; SBError</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetMemoryRegionInfo">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetMemoryRegions"></a><span class="summary-sig-name">GetMemoryRegions</span>(<span class="summary-sig-arg">self</span>)</span><br />
      GetMemoryRegions(SBProcess self) -&gt; SBMemoryRegionInfoList</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetMemoryRegions">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="__get_is_alive__"></a><span class="summary-sig-name">__get_is_alive__</span>(<span class="summary-sig-arg">self</span>)</span><br />
      Returns &quot;True&quot; if the process is currently alive, 
      &quot;False&quot; otherwise</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.__get_is_alive__">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="__get_is_running__"></a><span class="summary-sig-name">__get_is_running__</span>(<span class="summary-sig-arg">self</span>)</span><br />
      Returns &quot;True&quot; if the process is currently running, 
      &quot;False&quot; otherwise</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.__get_is_running__">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="__get_is_stopped__"></a><span class="summary-sig-name">__get_is_stopped__</span>(<span class="summary-sig-arg">self</span>)</span><br />
      Returns &quot;True&quot; if the process is currently stopped, 
      &quot;False&quot; otherwise</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.__get_is_stopped__">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="get_threads_access_object"></a><span class="summary-sig-name">get_threads_access_object</span>(<span class="summary-sig-arg">self</span>)</span><br />
      An accessor function that returns a modules_access() object which 
      allows lazy thread access from a lldb.SBProcess object.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.get_threads_access_object">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="get_process_thread_list"></a><span class="summary-sig-name">get_process_thread_list</span>(<span class="summary-sig-arg">self</span>)</span><br />
      An accessor function that returns a list() that contains all threads 
      in a lldb.SBProcess object.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.get_process_thread_list">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBProcess-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
      __str__(SBProcess self) -&gt; PyObject *</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.__str__">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
  <tr>
    <td colspan="2" class="summary">
    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
      <code>__delattr__</code>,
      <code>__format__</code>,
      <code>__getattribute__</code>,
      <code>__hash__</code>,
      <code>__new__</code>,
      <code>__reduce__</code>,
      <code>__reduce_ex__</code>,
      <code>__sizeof__</code>,
      <code>__subclasshook__</code>
      </p>
    </td>
  </tr>
</table>
<!-- ==================== STATIC METHODS ==================== -->
<a name="section-StaticMethods"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Static Methods</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-StaticMethods"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">str const *</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetBroadcasterClassName"></a><span class="summary-sig-name">GetBroadcasterClassName</span>()</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetBroadcasterClassName">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetStateFromEvent"></a><span class="summary-sig-name">GetStateFromEvent</span>(<span class="summary-sig-arg">*args</span>)</span><br />
      GetStateFromEvent(SBEvent event) -&gt; lldb::StateType</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetStateFromEvent">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetRestartedFromEvent"></a><span class="summary-sig-name">GetRestartedFromEvent</span>(<span class="summary-sig-arg">*args</span>)</span><br />
      GetRestartedFromEvent(SBEvent event) -&gt; bool</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetRestartedFromEvent">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetNumRestartedReasonsFromEvent"></a><span class="summary-sig-name">GetNumRestartedReasonsFromEvent</span>(<span class="summary-sig-arg">*args</span>)</span><br />
      GetNumRestartedReasonsFromEvent(SBEvent event) -&gt; size_t</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetNumRestartedReasonsFromEvent">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetRestartedReasonAtIndexFromEvent"></a><span class="summary-sig-name">GetRestartedReasonAtIndexFromEvent</span>(<span class="summary-sig-arg">*args</span>)</span><br />
      GetRestartedReasonAtIndexFromEvent(SBEvent event, size_t idx) -&gt; 
      str const *</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetRestartedReasonAtIndexFromEvent">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetProcessFromEvent"></a><span class="summary-sig-name">GetProcessFromEvent</span>(<span class="summary-sig-arg">*args</span>)</span><br />
      GetProcessFromEvent(SBEvent event) -&gt; SBProcess</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetProcessFromEvent">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetInterruptedFromEvent"></a><span class="summary-sig-name">GetInterruptedFromEvent</span>(<span class="summary-sig-arg">*args</span>)</span><br />
      GetInterruptedFromEvent(SBEvent event) -&gt; bool</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetInterruptedFromEvent">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetStructuredDataFromEvent"></a><span class="summary-sig-name">GetStructuredDataFromEvent</span>(<span class="summary-sig-arg">*args</span>)</span><br />
      GetStructuredDataFromEvent(SBEvent event) -&gt; SBStructuredData</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetStructuredDataFromEvent">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="EventIsProcessEvent"></a><span class="summary-sig-name">EventIsProcessEvent</span>(<span class="summary-sig-arg">*args</span>)</span><br />
      EventIsProcessEvent(SBEvent event) -&gt; bool</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.EventIsProcessEvent">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="EventIsStructuredDataEvent"></a><span class="summary-sig-name">EventIsStructuredDataEvent</span>(<span class="summary-sig-arg">*args</span>)</span><br />
      EventIsStructuredDataEvent(SBEvent event) -&gt; bool</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBProcess.EventIsStructuredDataEvent">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
</table>
<!-- ==================== CLASS VARIABLES ==================== -->
<a name="section-ClassVariables"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Class Variables</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-ClassVariables"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="__swig_setmethods__"></a><span class="summary-name">__swig_setmethods__</span> = <code title="{}">{}</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="__swig_getmethods__"></a><span class="summary-name">__swig_getmethods__</span> = <code title="{}">{}</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="eBroadcastBitStateChanged"></a><span class="summary-name">eBroadcastBitStateChanged</span> = <code title="1">1</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="eBroadcastBitInterrupt"></a><span class="summary-name">eBroadcastBitInterrupt</span> = <code title="2">2</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="eBroadcastBitSTDOUT"></a><span class="summary-name">eBroadcastBitSTDOUT</span> = <code title="4">4</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="eBroadcastBitSTDERR"></a><span class="summary-name">eBroadcastBitSTDERR</span> = <code title="8">8</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="eBroadcastBitProfileData"></a><span class="summary-name">eBroadcastBitProfileData</span> = <code title="16">16</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="eBroadcastBitStructuredData"></a><span class="summary-name">eBroadcastBitStructuredData</span> = <code title="32">32</code>
    </td>
  </tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Properties</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-Properties"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBProcess-class.html#broadcaster" class="summary-name">broadcaster</a><br />
      A read only property that an lldb object that represents the 
      broadcaster (lldb.SBBroadcaster) for this process.
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBProcess-class.html#exit_description" class="summary-name">exit_description</a><br />
      A read only property that returns an exit description as a string of 
      this process when the process state is lldb.eStateExited.
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBProcess-class.html#exit_state" class="summary-name">exit_state</a><br />
      A read only property that returns an exit status as an integer of 
      this process when the process state is lldb.eStateExited.
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBProcess-class.html#id" class="summary-name">id</a><br />
      A read only property that returns the process ID as an integer.
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBProcess-class.html#is_alive" class="summary-name">is_alive</a><br />
      A read only property that returns a boolean value that indicates if 
      this process is currently alive.
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBProcess-class.html#is_running" class="summary-name">is_running</a><br />
      A read only property that returns a boolean value that indicates if 
      this process is currently running.
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBProcess-class.html#is_stopped" class="summary-name">is_stopped</a><br />
      A read only property that returns a boolean value that indicates if 
      this process is currently stopped.
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBProcess-class.html#num_threads" class="summary-name">num_threads</a><br />
      A read only property that returns the number of threads in this 
      process as an integer.
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBProcess-class.html#selected_thread" class="summary-name">selected_thread</a><br />
      A read/write property that gets/sets the currently selected thread in
      this process.
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBProcess-class.html#state" class="summary-name">state</a><br />
      A read only property that returns an lldb enumeration value (see 
      enumerations that start with &quot;lldb.eState&quot;) that represents
      the current state of this process (running, stopped, exited, etc.).
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBProcess-class.html#target" class="summary-name">target</a><br />
      A read only property that an lldb object that represents the target 
      (lldb.SBTarget) that owns this process.
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBProcess-class.html#thread" class="summary-name">thread</a><br />
      A read only property that returns an object that can access threads 
      by thread index (thread = lldb.process.thread[12]).
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBProcess-class.html#threads" class="summary-name">threads</a><br />
      A read only property that returns a list() of lldb.SBThread objects 
      for this process.
    </td>
  </tr>
  <tr>
    <td colspan="2" class="summary">
    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
      <code>__class__</code>
      </p>
    </td>
  </tr>
</table>
<!-- ==================== METHOD DETAILS ==================== -->
<a name="section-MethodDetails"></a>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Method Details</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-MethodDetails"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
</table>
<a name="__setattr__"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">__setattr__</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">name</span>,
        <span class="sig-arg">value</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBProcess.__setattr__">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>x.__setattr__('name', value) &lt;==&gt; x.name = value</p>
  <dl class="fields">
    <dt>Overrides:
        object.__setattr__
        <dd><em class="note">(inherited documentation)</em></dd>
    </dt>
  </dl>
</td></tr></table>
</div>
<a name="__repr__"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">self</span>)</span>
    <br /><em class="fname">(Representation operator)</em>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#_swig_repr">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>repr(x)</p>
  <dl class="fields">
    <dt>Overrides:
        object.__repr__
        <dd><em class="note">(inherited documentation)</em></dd>
    </dt>
  </dl>
</td></tr></table>
</div>
<a name="__init__"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">*args</span>)</span>
    <br /><em class="fname">(Constructor)</em>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBProcess.__init__">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>__init__(lldb::SBProcess self) -&gt; SBProcess 
  __init__(lldb::SBProcess self, SBProcess rhs) -&gt; SBProcess</p>
  <dl class="fields">
    <dt>Overrides:
        object.__init__
    </dt>
  </dl>
</td></tr></table>
</div>
<a name="PutSTDIN"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">PutSTDIN</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">*args</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBProcess.PutSTDIN">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Writes data into the current process's stdin. API client specifies a 
  Python string as the only argument.</p>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="GetSTDOUT"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">GetSTDOUT</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">*args</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetSTDOUT">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Reads data from the current process's stdout stream. API client 
  specifies the size of the buffer to read data into. It returns the byte 
  buffer in a Python string.</p>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="GetSTDERR"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">GetSTDERR</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">*args</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetSTDERR">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Reads data from the current process's stderr stream. API client 
  specifies the size of the buffer to read data into. It returns the byte 
  buffer in a Python string.</p>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="RemoteAttachToProcessWithID"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">RemoteAttachToProcessWithID</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">*args</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBProcess.RemoteAttachToProcessWithID">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>RemoteAttachToProcessWithID(SBProcess self, lldb::pid_t pid, SBError 
  error) -&gt; bool</p>
  <p>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.</p>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="RemoteLaunch"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">RemoteLaunch</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">*args</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBProcess.RemoteLaunch">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

RemoteLaunch(SBProcess self, str const ** argv, str const ** envp, str const * stdin_path, str const * stdout_path, 
    str const * stderr_path, str const * working_directory, uint32_t launch_flags, 
    bool stop_at_entry, SBError error) -&gt; bool

See SBTarget.Launch for argument description and usage.

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="GetThreadAtIndex"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">GetThreadAtIndex</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">*args</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetThreadAtIndex">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Returns the INDEX'th thread from the list of current threads.  The 
  index of a thread is only valid for the current stop.  For a persistent 
  thread identifier use either the thread ID or the IndexID.  See help on 
  SBThread for more details.</p>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="GetUniqueID"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">GetUniqueID</span>(<span class="sig-arg">self</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetUniqueID">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Returns an integer ID that is guaranteed to be unique across all 
  process instances. This is not the process ID, just a unique integer for 
  comparison and caching purposes.</p>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="Destroy"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">Destroy</span>(<span class="sig-arg">self</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBProcess.Destroy">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Destroy(SBProcess self) -&gt; SBError</p>
  <p>Kills the process and shuts down all threads that were spawned to 
  track and monitor process.</p>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="Signal"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">Signal</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">*args</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBProcess.Signal">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Signal(SBProcess self, int signal) -&gt; SBError</p>
  <p>Sends the process a unix signal.</p>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="GetStopID"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">GetStopID</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">include_expression_stops</span>=<span class="sig-default">False</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetStopID">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>GetStopID(SBProcess self, bool include_expression_stops=False) -&gt; 
  uint32_t GetStopID(SBProcess self) -&gt; uint32_t</p>
  <p>Returns a stop id that will increase every time the process executes.
  If include_expression_stops is true, then stops caused by expression 
  evaluation will cause the returned value to increase, otherwise the 
  counter returned will only increase when execution is continued 
  explicitly by the user.  Note, the value will always increase, but may 
  increase by more than one per stop.</p>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="ReadMemory"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">ReadMemory</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">*args</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBProcess.ReadMemory">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>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:</p>
  <p># Read 4 bytes from address 'addr' and assume error.Success() is True.
  content = process.ReadMemory(addr, 4, error) new_bytes = 
  bytearray(content)</p>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="WriteMemory"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">WriteMemory</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">*args</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBProcess.WriteMemory">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

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!')

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="ReadCStringFromMemory"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">ReadCStringFromMemory</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">*args</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBProcess.ReadCStringFromMemory">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

Reads a NULL terminated C string from the current process's address space.
It returns a python string of the exact length, or truncates the string if
the maximum stracter limit is reached. Example:

# Read a C string of at most 256 bytes from address '0x1000' 
error = lldb.SBError()
cstring = process.ReadCStringFromMemory(0x1000, 256, error)
if error.Success():
    print('cstring: ', cstring)
else
    print('error: ', error)

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="ReadUnsignedFromMemory"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">ReadUnsignedFromMemory</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">*args</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBProcess.ReadUnsignedFromMemory">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

Reads an unsigned integer from memory given a byte size and an address. 
Returns the unsigned integer that was read. Example:

# Read a 4 byte unsigned integer from address 0x1000
error = lldb.SBError()
uint = ReadUnsignedFromMemory(0x1000, 4, error)
if error.Success():
    print('integer: %u' % uint)
else
    print('error: ', error)

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="ReadPointerFromMemory"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">ReadPointerFromMemory</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">*args</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBProcess.ReadPointerFromMemory">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

Reads a pointer from memory from an address and returns the value. Example:

# Read a pointer from address 0x1000
error = lldb.SBError()
ptr = ReadPointerFromMemory(0x1000, error)
if error.Success():
    print('pointer: 0x%x' % ptr)
else
    print('error: ', error)

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="GetNumExtendedBacktraceTypes"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">GetNumExtendedBacktraceTypes</span>(<span class="sig-arg">self</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBProcess.GetNumExtendedBacktraceTypes">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Return the number of different thread-origin extended backtraces this 
  process can support as a uint32_t. When the process is stopped and you 
  have an SBThread, lldb may be able to show a backtrace of when that 
  thread was originally created, or the work item was enqueued to it (in 
  the case of a libdispatch queue).</p>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="__str__"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
    <br /><em class="fname">(Informal representation operator)</em>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBProcess.__str__">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>__str__(SBProcess self) -&gt; PyObject *</p>
  <dl class="fields">
    <dt>Overrides:
        object.__str__
    </dt>
  </dl>
</td></tr></table>
</div>
<br />
<!-- ==================== PROPERTY DETAILS ==================== -->
<a name="section-PropertyDetails"></a>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Property Details</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-PropertyDetails"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
</table>
<a name="broadcaster"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">broadcaster</h3>
  <p>A read only property that an lldb object that represents the 
  broadcaster (lldb.SBBroadcaster) for this process.</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBProcess-class.html#GetBroadcaster" class="summary-sig-name">GetBroadcaster</a>(<span class="summary-sig-arg">self</span>)</span>
        - GetBroadcaster(SBProcess self) -&gt; SBBroadcaster
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="exit_description"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">exit_description</h3>
  <p>A read only property that returns an exit description as a string of 
  this process when the process state is lldb.eStateExited.</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBProcess-class.html#GetExitDescription" class="summary-sig-name">GetExitDescription</a>(<span class="summary-sig-arg">self</span>)</span>
        - GetExitDescription(SBProcess self) -&gt; str const *
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="exit_state"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">exit_state</h3>
  <p>A read only property that returns an exit status as an integer of this
  process when the process state is lldb.eStateExited.</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBProcess-class.html#GetExitStatus" class="summary-sig-name">GetExitStatus</a>(<span class="summary-sig-arg">self</span>)</span>
        - GetExitStatus(SBProcess self) -&gt; int
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="id"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">id</h3>
  <p>A read only property that returns the process ID as an integer.</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBProcess-class.html#GetProcessID" class="summary-sig-name">GetProcessID</a>(<span class="summary-sig-arg">self</span>)</span>
        - Returns the process ID of the process.
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="is_alive"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">is_alive</h3>
  <p>A read only property that returns a boolean value that indicates if 
  this process is currently alive.</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBProcess-class.html#__get_is_alive__" class="summary-sig-name">__get_is_alive__</a>(<span class="summary-sig-arg">self</span>)</span>
        - Returns &quot;True&quot; if the process is currently alive, 
      &quot;False&quot; otherwise
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="is_running"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">is_running</h3>
  <p>A read only property that returns a boolean value that indicates if 
  this process is currently running.</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBProcess-class.html#__get_is_running__" class="summary-sig-name">__get_is_running__</a>(<span class="summary-sig-arg">self</span>)</span>
        - Returns &quot;True&quot; if the process is currently running, 
      &quot;False&quot; otherwise
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="is_stopped"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">is_stopped</h3>
  <p>A read only property that returns a boolean value that indicates if 
  this process is currently stopped.</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBProcess-class.html#__get_is_stopped__" class="summary-sig-name">__get_is_stopped__</a>(<span class="summary-sig-arg">self</span>)</span>
        - Returns &quot;True&quot; if the process is currently stopped, 
      &quot;False&quot; otherwise
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="num_threads"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">num_threads</h3>
  <p>A read only property that returns the number of threads in this 
  process as an integer.</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBProcess-class.html#GetNumThreads" class="summary-sig-name">GetNumThreads</a>(<span class="summary-sig-arg">self</span>)</span>
        - GetNumThreads(SBProcess self) -&gt; uint32_t
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="selected_thread"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">selected_thread</h3>
  <p>A read/write property that gets/sets the currently selected thread in 
  this process. The getter returns a lldb.SBThread object and the setter 
  takes an lldb.SBThread object.</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBProcess-class.html#GetSelectedThread" class="summary-sig-name">GetSelectedThread</a>(<span class="summary-sig-arg">self</span>)</span>
        - Returns the currently selected thread.
    </dd>
    <dt>Set Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBProcess-class.html#SetSelectedThread" class="summary-sig-name">SetSelectedThread</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span>
        - SetSelectedThread(SBProcess self, SBThread thread) -&gt; bool
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="state"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">state</h3>
  <p>A read only property that returns an lldb enumeration value (see 
  enumerations that start with &quot;lldb.eState&quot;) that represents the
  current state of this process (running, stopped, exited, etc.).</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBProcess-class.html#GetState" class="summary-sig-name">GetState</a>(<span class="summary-sig-arg">self</span>)</span>
        - GetState(SBProcess self) -&gt; lldb::StateType
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="target"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">target</h3>
  <p>A read only property that an lldb object that represents the target 
  (lldb.SBTarget) that owns this process.</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBProcess-class.html#GetTarget" class="summary-sig-name">GetTarget</a>(<span class="summary-sig-arg">self</span>)</span>
        - GetTarget(SBProcess self) -&gt; SBTarget
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="thread"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">thread</h3>
  <p>A read only property that returns an object that can access threads by
  thread index (thread = lldb.process.thread[12]).</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBProcess-class.html#get_threads_access_object" class="summary-sig-name">get_threads_access_object</a>(<span class="summary-sig-arg">self</span>)</span>
        - An accessor function that returns a modules_access() object which 
      allows lazy thread access from a lldb.SBProcess object.
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="threads"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">threads</h3>
  <p>A read only property that returns a list() of lldb.SBThread objects 
  for this process.</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBProcess-class.html#get_process_thread_list" class="summary-sig-name">get_process_thread_list</a>(<span class="summary-sig-arg">self</span>)</span>
        - An accessor function that returns a list() that contains all threads 
      in a lldb.SBProcess object.
    </dd>
  </dl>
</td></tr></table>
</div>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Project homepage -->
      <th class="navbar" align="right" width="100%">
        <table border="0" cellpadding="0" cellspacing="0">
          <tr><th class="navbar" align="center"
            ><a class="navbar" target="_top" href="http://lldb.llvm.org">LLDB python API</a></th>
          </tr></table></th>
  </tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
  <tr>
    <td align="left" class="footer">
    Generated by Epydoc 3.0.1 on Fri Oct 14 13:55:27 2016
    </td>
    <td align="right" class="footer">
      <a target="mainFrame" href="http://epydoc.sourceforge.net"
        >http://epydoc.sourceforge.net</a>
    </td>
  </tr>
</table>

<script type="text/javascript">
  <!--
  // Private objects are initially displayed (because if
  // javascript is turned off then we want them to be
  // visible); but by default, we want to hide them.  So hide
  // them unless we have a cookie that says to show them.
  checkCookie();
  // -->
</script>
</body>
</html>
