SBProcess.cpp revision 5c4c746a3a83c1aad411c6cdc5f9525a4fc2d17e
124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- SBProcess.cpp -------------------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 107a62c8b129b7e1b5e838b7616a794e01df01818bEli Friedman#include "lldb/API/SBProcess.h" 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/lldb-defines.h" 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/lldb-types.h" 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1584cdc15005983e5244d665fa779e33c2b6fac95fJim Ingham#include "lldb/Interpreter/Args.h" 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/DataBufferHeap.h" 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/DataExtractor.h" 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/State.h" 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/Stream.h" 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/StreamFile.h" 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Target/Process.h" 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Target/RegisterContext.h" 2363094e0bb161580564954dee512955c1c79d3476Greg Clayton#include "lldb/Target/Target.h" 2463094e0bb161580564954dee512955c1c79d3476Greg Clayton#include "lldb/Target/Thread.h" 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Project includes 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 287a62c8b129b7e1b5e838b7616a794e01df01818bEli Friedman#include "lldb/API/SBBroadcaster.h" 297a62c8b129b7e1b5e838b7616a794e01df01818bEli Friedman#include "lldb/API/SBDebugger.h" 307a62c8b129b7e1b5e838b7616a794e01df01818bEli Friedman#include "lldb/API/SBCommandReturnObject.h" 317a62c8b129b7e1b5e838b7616a794e01df01818bEli Friedman#include "lldb/API/SBEvent.h" 327a62c8b129b7e1b5e838b7616a794e01df01818bEli Friedman#include "lldb/API/SBThread.h" 3398f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice#include "lldb/API/SBStream.h" 347a62c8b129b7e1b5e838b7616a794e01df01818bEli Friedman#include "lldb/API/SBStringList.h" 3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerusing namespace lldb; 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerusing namespace lldb_private; 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::SBProcess () : 4263094e0bb161580564954dee512955c1c79d3476Greg Clayton m_opaque_sp() 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//---------------------------------------------------------------------- 4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// SBProcess constructor 4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//---------------------------------------------------------------------- 5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::SBProcess (const SBProcess& rhs) : 5263094e0bb161580564954dee512955c1c79d3476Greg Clayton m_opaque_sp (rhs.m_opaque_sp) 5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::SBProcess (const lldb::ProcessSP &process_sp) : 5863094e0bb161580564954dee512955c1c79d3476Greg Clayton m_opaque_sp (process_sp) 5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//---------------------------------------------------------------------- 6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Destructor 6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//---------------------------------------------------------------------- 6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::~SBProcess() 6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid 7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::SetProcess (const ProcessSP &process_sp) 7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 7263094e0bb161580564954dee512955c1c79d3476Greg Clayton m_opaque_sp = process_sp; 7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid 7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::Clear () 7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 7863094e0bb161580564954dee512955c1c79d3476Greg Clayton m_opaque_sp.reset(); 7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool 8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::IsValid() const 8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 8563094e0bb161580564954dee512955c1c79d3476Greg Clayton return m_opaque_sp.get() != NULL; 8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattneruint32_t 9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::GetNumThreads () 9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 9263094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 9324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 9424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const bool can_update = true; 9563094e0bb161580564954dee512955c1c79d3476Greg Clayton return m_opaque_sp->GetThreadList().GetSize(can_update); 9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 9724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return 0; 9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 9924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 10024943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBThread 101c833295baeec641086f536e78050388af36784f8Jim InghamSBProcess::GetSelectedThread () const 10224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 10324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBThread sb_thread; 10463094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 105c833295baeec641086f536e78050388af36784f8Jim Ingham sb_thread.SetThread (m_opaque_sp->GetThreadList().GetSelectedThread()); 10624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return sb_thread; 10724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 10824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 10924943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBTarget 11024943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::GetTarget() const 11124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 11224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBTarget sb_target; 11363094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 11463094e0bb161580564954dee512955c1c79d3476Greg Clayton sb_target = m_opaque_sp->GetTarget().GetSP(); 11524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return sb_target; 11624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 11724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 11824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 11924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnersize_t 12024943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::PutSTDIN (const char *src, size_t src_len) 12124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 12263094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp != NULL) 12324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 12424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Error error; 12563094e0bb161580564954dee512955c1c79d3476Greg Clayton return m_opaque_sp->PutSTDIN (src, src_len, error); 12624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 12724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 12824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return 0; 12924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 13024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 13124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnersize_t 13224943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::GetSTDOUT (char *dst, size_t dst_len) const 13324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 13463094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp != NULL) 13524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 13624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Error error; 13763094e0bb161580564954dee512955c1c79d3476Greg Clayton return m_opaque_sp->GetSTDOUT (dst, dst_len, error); 13824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 13924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 14024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return 0; 14124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 14224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 14324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnersize_t 14424943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::GetSTDERR (char *dst, size_t dst_len) const 14524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 14663094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp != NULL) 14724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 14824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Error error; 14963094e0bb161580564954dee512955c1c79d3476Greg Clayton return m_opaque_sp->GetSTDERR (dst, dst_len, error); 15024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 15124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 15224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return 0; 15324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 15424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 15524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid 156c833295baeec641086f536e78050388af36784f8Jim InghamSBProcess::ReportEventState (const SBEvent &event, FILE *out) const 15724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 15824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (out == NULL) 15924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return; 16024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 16163094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp != NULL) 16224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 16324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const StateType event_state = SBProcess::GetStateFromEvent (event); 16424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner char message[1024]; 16524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int message_len = ::snprintf (message, 16624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner sizeof (message), 16724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner "Process %d %s\n", 16863094e0bb161580564954dee512955c1c79d3476Greg Clayton m_opaque_sp->GetID(), 16924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBDebugger::StateAsCString (event_state)); 17024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 17124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (message_len > 0) 17224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ::fwrite (message, 1, message_len, out); 17324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 17424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 17524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 17624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid 177c833295baeec641086f536e78050388af36784f8Jim InghamSBProcess::AppendEventStateReport (const SBEvent &event, SBCommandReturnObject &result) 17824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 17963094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp != NULL) 18024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 18124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const StateType event_state = SBProcess::GetStateFromEvent (event); 18224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner char message[1024]; 18324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ::snprintf (message, 18424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner sizeof (message), 18524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner "Process %d %s\n", 18663094e0bb161580564954dee512955c1c79d3476Greg Clayton m_opaque_sp->GetID(), 18724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBDebugger::StateAsCString (event_state)); 18824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 18924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.AppendMessage (message); 19024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 19124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 19224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 19324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool 194c833295baeec641086f536e78050388af36784f8Jim InghamSBProcess::SetSelectedThread (const SBThread &thread) 19524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 19663094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp != NULL) 197c833295baeec641086f536e78050388af36784f8Jim Ingham return m_opaque_sp->GetThreadList().SetSelectedThreadByID (thread.GetThreadID()); 19824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return false; 19924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 20024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 20124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool 202c833295baeec641086f536e78050388af36784f8Jim InghamSBProcess::SetSelectedThreadByID (uint32_t tid) 20324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 20463094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp != NULL) 205c833295baeec641086f536e78050388af36784f8Jim Ingham return m_opaque_sp->GetThreadList().SetSelectedThreadByID (tid); 20624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return false; 20724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 20824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 20924943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBThread 21024943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::GetThreadAtIndex (size_t index) 21124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 21224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBThread thread; 21363094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 21463094e0bb161580564954dee512955c1c79d3476Greg Clayton thread.SetThread (m_opaque_sp->GetThreadList().GetThreadAtIndex(index)); 21524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return thread; 21624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 21724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 21824943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerStateType 21924943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::GetState () 22024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 22163094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp != NULL) 22263094e0bb161580564954dee512955c1c79d3476Greg Clayton return m_opaque_sp->GetState(); 22324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 22424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return eStateInvalid; 22524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 22624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 22724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 22824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerint 22924943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::GetExitStatus () 23024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 23163094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp != NULL) 23263094e0bb161580564954dee512955c1c79d3476Greg Clayton return m_opaque_sp->GetExitStatus (); 23324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 23424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return 0; 23524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 23624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 23724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerconst char * 23824943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::GetExitDescription () 23924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 24063094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp != NULL) 24163094e0bb161580564954dee512955c1c79d3476Greg Clayton return m_opaque_sp->GetExitDescription (); 24224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 24324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return NULL; 24424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 24524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 24624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerlldb::pid_t 24724943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::GetProcessID () 24824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 24963094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 25063094e0bb161580564954dee512955c1c79d3476Greg Clayton return m_opaque_sp->GetID(); 25124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 25224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return LLDB_INVALID_PROCESS_ID; 25324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 25424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 25524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattneruint32_t 25624943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::GetAddressByteSize () const 25724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 25863094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 25963094e0bb161580564954dee512955c1c79d3476Greg Clayton return m_opaque_sp->GetAddressByteSize(); 26024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 26124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return 0; 26224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 26324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 26424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool 26524943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::WaitUntilProcessHasStopped (SBCommandReturnObject &result) 26624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 26724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool state_changed = false; 26824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 26924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (IsValid()) 27024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 27124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner EventSP event_sp; 27263094e0bb161580564954dee512955c1c79d3476Greg Clayton StateType state = m_opaque_sp->WaitForStateChangedEvents (NULL, event_sp); 27324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 27424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner while (StateIsStoppedState (state)) 27524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 27663094e0bb161580564954dee512955c1c79d3476Greg Clayton state = m_opaque_sp->WaitForStateChangedEvents (NULL, event_sp); 27724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBEvent event (event_sp); 278c833295baeec641086f536e78050388af36784f8Jim Ingham AppendEventStateReport (event, result); 27924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner state_changed = true; 28024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 28124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 28224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return state_changed; 28324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 28424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 28524943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBError 28624943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::Continue () 28724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 28824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBError sb_error; 28924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (IsValid()) 29063094e0bb161580564954dee512955c1c79d3476Greg Clayton sb_error.SetError(m_opaque_sp->Resume()); 29124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 29224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner sb_error.SetErrorString ("SBProcess is invalid"); 29324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 29424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return sb_error; 29524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 29624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 29724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 29824943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBError 29924943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::Destroy () 30024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 30124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBError sb_error; 30263094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 30363094e0bb161580564954dee512955c1c79d3476Greg Clayton sb_error.SetError(m_opaque_sp->Destroy()); 30424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 30524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner sb_error.SetErrorString ("SBProcess is invalid"); 30624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 30724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return sb_error; 30824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 30924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 31024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 31124943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBError 31224943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::Stop () 31324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 31424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBError sb_error; 31524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (IsValid()) 31663094e0bb161580564954dee512955c1c79d3476Greg Clayton sb_error.SetError (m_opaque_sp->Halt()); 31724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 31824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner sb_error.SetErrorString ("SBProcess is invalid"); 31924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return sb_error; 32024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 32124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 32224943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBError 32324943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::Kill () 32424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 32524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBError sb_error; 32663094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 32763094e0bb161580564954dee512955c1c79d3476Greg Clayton sb_error.SetError (m_opaque_sp->Destroy()); 32824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 32924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner sb_error.SetErrorString ("SBProcess is invalid"); 33024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return sb_error; 33124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 33224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 33324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 33424943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBError 33524943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::AttachByName (const char *name, bool wait_for_launch) 33624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 33724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBError sb_error; 33863094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 33963094e0bb161580564954dee512955c1c79d3476Greg Clayton sb_error.SetError (m_opaque_sp->Attach (name, wait_for_launch)); 34024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 34124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner sb_error.SetErrorString ("SBProcess is invalid"); 34224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return sb_error; 34324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 34424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 34524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerlldb::pid_t 346dfc91c368886f961b5cac95efc9adfe9be05cf73Caroline TiceSBProcess::AttachByPID (lldb::pid_t attach_pid) // DEPRECATED: will be removed in a few builds in favor of SBError AttachByPID(pid_t) 34724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 34824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Attach (attach_pid); 34924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return GetProcessID(); 35024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 35124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 352dfc91c368886f961b5cac95efc9adfe9be05cf73Caroline Tice 35324943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBError 35424943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::Attach (lldb::pid_t attach_pid) 35524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 35624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBError sb_error; 35763094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 35863094e0bb161580564954dee512955c1c79d3476Greg Clayton sb_error.SetError (m_opaque_sp->Attach (attach_pid)); 35924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 36024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner sb_error.SetErrorString ("SBProcess is invalid"); 36124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return sb_error; 36224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 36324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 36424943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBError 36524943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::Detach () 36624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 36724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBError sb_error; 36863094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 36963094e0bb161580564954dee512955c1c79d3476Greg Clayton sb_error.SetError (m_opaque_sp->Detach()); 37024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 37124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner sb_error.SetErrorString ("SBProcess is invalid"); 37224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 37324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return sb_error; 37424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 37524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 37624943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBError 37724943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::Signal (int signal) 37824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 37924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBError sb_error; 38063094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 38163094e0bb161580564954dee512955c1c79d3476Greg Clayton sb_error.SetError (m_opaque_sp->Signal (signal)); 38224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 38324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner sb_error.SetErrorString ("SBProcess is invalid"); 38424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return sb_error; 38524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 38624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 38724943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBThread 38824943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::GetThreadByID (tid_t sb_thread_id) 38924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 39024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBThread thread; 39163094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 39263094e0bb161580564954dee512955c1c79d3476Greg Clayton thread.SetThread (m_opaque_sp->GetThreadList().FindThreadByID ((tid_t) sb_thread_id)); 39324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return thread; 39424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 39524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 39624943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerStateType 39724943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::GetStateFromEvent (const SBEvent &event) 39824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 39963094e0bb161580564954dee512955c1c79d3476Greg Clayton return Process::ProcessEventData::GetStateFromEvent (event.get()); 40024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 40124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 40224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool 40324943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::GetRestartedFromEvent (const SBEvent &event) 40424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 40563094e0bb161580564954dee512955c1c79d3476Greg Clayton return Process::ProcessEventData::GetRestartedFromEvent (event.get()); 40624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 40724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 40824943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess 40924943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::GetProcessFromEvent (const SBEvent &event) 41024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 41163094e0bb161580564954dee512955c1c79d3476Greg Clayton SBProcess process(Process::ProcessEventData::GetProcessFromEvent (event.get())); 41224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return process; 41324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 41424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 41524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 41624943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBBroadcaster 41724943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::GetBroadcaster () const 41824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 41963094e0bb161580564954dee512955c1c79d3476Greg Clayton SBBroadcaster broadcaster(m_opaque_sp.get(), false); 42024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return broadcaster; 42124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 42224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 42324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerlldb_private::Process * 42424943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::operator->() const 42524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 42663094e0bb161580564954dee512955c1c79d3476Greg Clayton return m_opaque_sp.get(); 42724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 42824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 42924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnersize_t 43024943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::ReadMemory (addr_t addr, void *dst, size_t dst_len, SBError &sb_error) 43124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 43224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner size_t bytes_read = 0; 43324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 43424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (IsValid()) 43524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 43624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Error error; 43763094e0bb161580564954dee512955c1c79d3476Greg Clayton bytes_read = m_opaque_sp->ReadMemory (addr, dst, dst_len, error); 43824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner sb_error.SetError (error); 43924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 44024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 44124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 44224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner sb_error.SetErrorString ("SBProcess is invalid"); 44324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 44424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 44524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return bytes_read; 44624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 44724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 44824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnersize_t 44924943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::WriteMemory (addr_t addr, const void *src, size_t src_len, SBError &sb_error) 45024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 45124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner size_t bytes_written = 0; 45224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 45324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (IsValid()) 45424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 45524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Error error; 45663094e0bb161580564954dee512955c1c79d3476Greg Clayton bytes_written = m_opaque_sp->WriteMemory (addr, src, src_len, error); 45724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner sb_error.SetError (error); 45824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 45924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 46024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return bytes_written; 46124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 46224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 46324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Mimic shared pointer... 46424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerlldb_private::Process * 46524943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBProcess::get() const 46624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 46763094e0bb161580564954dee512955c1c79d3476Greg Clayton return m_opaque_sp.get(); 46824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 46924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 47098f930f429160f9777f626c3ac6aa609f4e965d2Caroline Ticebool 47198f930f429160f9777f626c3ac6aa609f4e965d2Caroline TiceSBProcess::GetDescription (SBStream &description) 47298f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice{ 47398f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice if (m_opaque_sp) 47498f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice { 47598f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice char path[PATH_MAX]; 47698f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice GetTarget().GetExecutable().GetPath (path, sizeof(path)); 4775c4c746a3a83c1aad411c6cdc5f9525a4fc2d17eGreg Clayton Module *exe_module = m_opaque_sp->GetTarget().GetExecutableModule ().get(); 4785c4c746a3a83c1aad411c6cdc5f9525a4fc2d17eGreg Clayton const char *exe_name = NULL; 4795c4c746a3a83c1aad411c6cdc5f9525a4fc2d17eGreg Clayton if (exe_module) 4805c4c746a3a83c1aad411c6cdc5f9525a4fc2d17eGreg Clayton exe_name = exe_module->GetFileSpec().GetFilename().AsCString(); 4815c4c746a3a83c1aad411c6cdc5f9525a4fc2d17eGreg Clayton 4825c4c746a3a83c1aad411c6cdc5f9525a4fc2d17eGreg Clayton description.Printf ("Process {pid: %d, state: %s, threads: %d%s%s}", 4835c4c746a3a83c1aad411c6cdc5f9525a4fc2d17eGreg Clayton m_opaque_sp->GetID(), 48498f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice SBDebugger::StateAsCString (GetState()), 4855c4c746a3a83c1aad411c6cdc5f9525a4fc2d17eGreg Clayton GetNumThreads(), 4865c4c746a3a83c1aad411c6cdc5f9525a4fc2d17eGreg Clayton exe_name ? ", executable: " : "", 4875c4c746a3a83c1aad411c6cdc5f9525a4fc2d17eGreg Clayton exe_name ? exe_name : ""); 48898f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice } 48998f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice else 49098f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice description.Printf ("No value"); 49198f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice 49298f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice return true; 49398f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice} 494