LLDB mainline
lldb_private::Process Class Referenceabstract

A plug-in interface definition class for debugging a process. More...

#include "lldb/Target/Process.h"

Inheritance diagram for lldb_private::Process:
[legend]

Classes

class  AttachCompletionHandler
class  NextEventAction
struct  Notifications
 A notification structure that can be used by clients to listen for changes in a process's lifetime. More...
struct  PreResumeCallbackAndBaton
class  ProcessEventData
class  ProcessEventHijacker

Public Types

enum  {
  eBroadcastBitStateChanged = (1 << 0) , eBroadcastBitInterrupt = (1 << 1) , eBroadcastBitSTDOUT = (1 << 2) , eBroadcastBitSTDERR = (1 << 3) ,
  eBroadcastBitProfileData = (1 << 4) , eBroadcastBitStructuredData = (1 << 5)
}
 Broadcaster event bits definitions. More...
enum  { eBroadcastInternalStateControlStop = (1 << 0) , eBroadcastInternalStateControlPause = (1 << 1) , eBroadcastInternalStateControlResume = (1 << 2) }
typedef Range< lldb::addr_t, lldb::addr_tLoadRange
typedef ProcessRunLock::ProcessRunLocker StopLocker
typedef std::function< IterationAction(lldb_private::Status &error, lldb::addr_t bytes_addr, const void *bytes, lldb::offset_t bytes_size)> ReadMemoryChunkCallback
typedef bool PreResumeActionCallback(void *)

Public Member Functions

llvm::StringRef GetBroadcasterClass () const override
 This needs to be filled in if you are going to register the broadcaster with the broadcaster manager and do broadcaster class matching.
 ~Process () override
 Destructor.
lldb::ByteOrder GetByteOrder () const
uint32_t GetAddressByteSize () const
lldb::pid_t GetID () const
 Returns the pid of the process or LLDB_INVALID_PROCESS_ID if there is no known pid.
void SetID (lldb::pid_t new_pid)
 Sets the stored pid.
uint32_t GetUniqueID () const
virtual bool CanDebug (lldb::TargetSP target, bool plugin_specified_by_name)=0
 Check if a plug-in instance can debug the file in module.
virtual void Finalize (bool destructing)
 This object is about to be destroyed, do any necessary cleanup.
bool IsValid () const
 Return whether this object is valid (i.e.
virtual CommandObjectGetPluginCommandObject ()
 Return a multi-word command object that can be used to expose plug-in specific commands.
virtual void DumpPluginHistory (Stream &s)
 The underlying plugin might store the low-level communication history for this session.
virtual Status Launch (ProcessLaunchInfo &launch_info)
 Launch a new process.
virtual Status LoadCore ()
virtual Status DoLoadCore ()
void SetShadowListener (lldb::ListenerSP shadow_listener_sp)
 The "ShadowListener" for a process is just an ordinary Listener that listens for all the Process event bits.
UtilityFunctionGetLoadImageUtilityFunction (Platform *platform, llvm::function_ref< std::unique_ptr< UtilityFunction >()> factory)
 Get the cached UtilityFunction that assists in loading binary images into the process.
virtual DynamicLoaderGetDynamicLoader ()
 Get the dynamic loader plug-in for this process.
void SetDynamicLoader (lldb::DynamicLoaderUP dyld)
virtual DataExtractor GetAuxvData ()
virtual llvm::Error LoadModules ()
 Sometimes processes know how to retrieve and load shared libraries.
virtual llvm::Expected< LoadedModuleInfoListGetLoadedModuleList ()
 Query remote GDBServer for a detailed loaded library list.
virtual llvm::Expected< boolSaveCore (llvm::StringRef outfile)
 Save core dump into the specified file.
Status CalculateCoreFileSaveRanges (const SaveCoreOptions &core_options, CoreFileMemoryRanges &ranges)
 Helper function for Process::SaveCore(...) that calculates the address ranges that should be saved.
std::vector< lldb::ThreadSPCalculateCoreFileThreadList (const SaveCoreOptions &core_options)
 Helper function for Process::SaveCore(...) that calculates the thread list based upon options set within a given core_options object.
virtual ArchSpec GetSystemArchitecture ()
 Get the system architecture for this process.
virtual SystemRuntimeGetSystemRuntime ()
 Get the system runtime plug-in for this process.
virtual Status Attach (ProcessAttachInfo &attach_info)
 Attach to an existing process using the process attach info.
virtual Status ConnectRemote (llvm::StringRef remote_url)
 Attach to a remote system via a URL.
bool GetShouldDetach () const
void SetShouldDetach (bool b)
const std::vector< lldb::addr_t > & GetImageTokens ()
 Get the image vector for the current process.
virtual lldb::addr_t GetImageInfoAddress ()
 Get the image information address for the current process.
virtual void WillPublicStop ()
 Called when the process is about to broadcast a public stop.
void RegisterNotificationCallbacks (const Process::Notifications &callbacks)
 Register for process and thread notifications.
bool UnregisterNotificationCallbacks (const Process::Notifications &callbacks)
 Unregister for process and thread notifications.
Status Resume ()
 Resumes all of a process's threads as configured using the Thread run control functions.
Status ResumeSynchronous (Stream *stream)
 Resume a process, and wait for it to stop.
Status Halt (bool clear_thread_plans=false, bool use_run_lock=true)
 Halts a running process.
Status Detach (bool keep_stopped)
 Detaches from a running or stopped process.
Status Destroy (bool force_kill)
 Kills the process and shuts down all threads that were spawned to track and monitor the process.
Status Signal (int signal)
 Sends a process a UNIX signal signal.
void SetUnixSignals (lldb::UnixSignalsSP &&signals_sp)
const lldb::UnixSignalsSPGetUnixSignals ()
Status WillAttachToProcessWithID (lldb::pid_t pid)
 Called before attaching to a process.
virtual Status DoWillAttachToProcessWithID (lldb::pid_t pid)
 Called before attaching to a process.
Status WillAttachToProcessWithName (const char *process_name, bool wait_for_launch)
 Called before attaching to a process.
virtual Status DoWillAttachToProcessWithName (const char *process_name, bool wait_for_launch)
 Called before attaching to a process.
virtual Status DoConnectRemote (llvm::StringRef remote_url)
 Attach to a remote system via a URL.
virtual Status DoAttachToProcessWithID (lldb::pid_t pid, const ProcessAttachInfo &attach_info)
 Attach to an existing process using a process ID.
virtual Status DoAttachToProcessWithName (const char *process_name, const ProcessAttachInfo &attach_info)
 Attach to an existing process using a partial process name.
virtual void DidAttach (ArchSpec &process_arch)
 Called after attaching a process.
virtual void DidExec ()
 Called after a process re-execs itself.
virtual void DoDidExec ()
 Subclasses of Process should implement this function if they need to do anything after a process exec's itself.
virtual void DidFork (lldb::pid_t child_pid, lldb::tid_t child_tid)
 Called after a reported fork.
virtual void DidVFork (lldb::pid_t child_pid, lldb::tid_t child_tid)
 Called after a reported vfork.
virtual void DidVForkDone ()
 Called after reported vfork completion.
Status WillLaunch (Module *module)
 Called before launching to a process.
virtual Status DoWillLaunch (Module *module)
 Called before launching to a process.
virtual Status DoLaunch (Module *exe_module, ProcessLaunchInfo &launch_info)
 Launch a new process.
virtual void DidLaunch ()
 Called after launching a process.
virtual Status WillResume ()
 Called before resuming to a process.
virtual bool SupportsReverseDirection ()
 Reports whether this process supports reverse execution.
virtual Status DoResume (lldb::RunDirection direction)
 Resumes all of a process's threads as configured using the Thread run control functions.
virtual void DidResume ()
 Called after resuming a process.
virtual Status WillHalt ()
 Called before halting to a process.
virtual Status DoHalt (bool &caused_stop)
 Halts a running process.
virtual void DidHalt ()
 Called after halting a process.
virtual Status WillDetach ()
 Called before detaching from a process.
virtual Status DoDetach (bool keep_stopped)
 Detaches from a running or stopped process.
virtual void DidDetach ()
 Called after detaching from a process.
virtual bool DetachRequiresHalt ()
virtual Status WillSignal ()
 Called before sending a signal to a process.
virtual Status DoSignal (int signal)
 Sends a process a UNIX signal signal.
virtual Status WillDestroy ()
virtual Status DoDestroy ()=0
virtual void DidDestroy ()
virtual bool DestroyRequiresHalt ()
virtual void DidSignal ()
 Called after sending a signal to a process.
virtual void RefreshStateAfterStop ()=0
 Currently called as part of ShouldStop.
virtual llvm::VersionTuple GetHostOSVersion ()
 Sometimes the connection to a process can detect the host OS version that the process is running on.
virtual llvm::VersionTuple GetHostMacCatalystVersion ()
TargetGetTarget ()
 Get the target object pointer for this module.
const TargetGetTarget () const
 Get the const target object pointer for this module.
void Flush ()
 Flush all data in the process.
lldb::StateType GetState ()
 Get accessor for the current process state.
lldb::ExpressionResults RunThreadPlan (ExecutionContext &exe_ctx, lldb::ThreadPlanSP &thread_plan_sp, const EvaluateExpressionOptions &options, DiagnosticManager &diagnostic_manager)
void GetStatus (Stream &ostrm)
size_t GetThreadStatus (Stream &ostrm, bool only_threads_with_stop_reason, uint32_t start_frame, uint32_t num_frames, uint32_t num_frames_with_source, bool stop_format)
void SendAsyncInterrupt (Thread *thread=nullptr)
 Send an async interrupt request.
virtual void ModulesDidLoad (ModuleList &module_list)
virtual lldb_private::StructuredData::ObjectSP GetLoadedDynamicLibrariesInfos (lldb::addr_t image_list_address, lldb::addr_t image_count)
 Retrieve the list of shared libraries that are loaded for this process This method is used on pre-macOS 10.12, pre-iOS 10, pre-tvOS 10, pre- watchOS 3 systems.
virtual lldb_private::StructuredData::ObjectSP GetLoadedDynamicLibrariesInfos ()
virtual lldb_private::StructuredData::ObjectSP GetLoadedDynamicLibrariesInfos (const std::vector< lldb::addr_t > &load_addresses)
virtual lldb_private::StructuredData::ObjectSP GetSharedCacheInfo ()
virtual lldb_private::StructuredData::ObjectSP GetDynamicLoaderProcessState ()
void PrintWarningOptimization (const SymbolContext &sc)
 Print a user-visible warning about a module being built with optimization.
void PrintWarningUnsupportedLanguage (const SymbolContext &sc)
 Print a user-visible warning about a function written in a language that this version of LLDB doesn't support.
virtual bool GetProcessInfo (ProcessInstanceInfo &info)
virtual lldb_private::UUID FindModuleUUID (const llvm::StringRef path)
int GetExitStatus ()
 Get the exit status for a process.
const char * GetExitDescription ()
 Get a textual description of what the process exited.
virtual void DidExit ()
lldb::addr_t GetCodeAddressMask ()
 Get the current address mask in the Process.
lldb::addr_t GetDataAddressMask ()
lldb::addr_t GetHighmemCodeAddressMask ()
 The highmem masks are for targets where we may have different masks for low memory versus high memory addresses, and they will be left as LLDB_INVALID_ADDRESS_MASK normally, meaning the base masks should be applied to all addresses.
lldb::addr_t GetHighmemDataAddressMask ()
void SetCodeAddressMask (lldb::addr_t code_address_mask)
void SetDataAddressMask (lldb::addr_t data_address_mask)
void SetHighmemCodeAddressMask (lldb::addr_t code_address_mask)
void SetHighmemDataAddressMask (lldb::addr_t data_address_mask)
lldb::addr_t FixCodeAddress (lldb::addr_t pc)
 Some targets might use bits in a code address to indicate a mode switch, ARM uses bit zero to signify a code address is thumb, so any ARM ABI plug-ins would strip those bits.
lldb::addr_t FixDataAddress (lldb::addr_t pc)
lldb::addr_t FixAnyAddress (lldb::addr_t pc)
 Use this method when you do not know, or do not care what kind of address you are fixing.
ProcessModID GetModID () const
 Get the Modification ID of the process.
const ProcessModIDGetModIDRef () const
uint32_t GetStopID () const
uint32_t GetResumeID () const
uint32_t GetLastUserExpressionResumeID () const
uint32_t GetLastNaturalStopID () const
lldb::EventSP GetStopEventForStopID (uint32_t stop_id) const
virtual bool SetExitStatus (int exit_status, llvm::StringRef exit_string)
 Set accessor for the process exit status (return code).
virtual bool IsAlive ()
 Check if a process is still alive.
virtual bool IsLiveDebugSession () const
 Check if a process is a live debug session, or a corefile/post-mortem.
virtual FileSpec GetCoreFile () const
 Provide a way to retrieve the core dump file that is loaded for debugging.
virtual bool WarnBeforeDetach () const
 Before lldb detaches from a process, it warns the user that they are about to lose their debug session.
virtual size_t ReadMemory (lldb::addr_t vm_addr, void *buf, size_t size, Status &error)
 Read of memory from a process.
size_t ReadMemoryFromInferior (lldb::addr_t vm_addr, void *buf, size_t size, Status &error)
 Read of memory from a process.
lldb::offset_t ReadMemoryInChunks (lldb::addr_t vm_addr, void *buf, lldb::addr_t chunk_size, lldb::offset_t total_size, ReadMemoryChunkCallback callback)
 Read of memory from a process in discrete chunks, terminating either when all bytes are read, or the supplied callback returns IterationAction::Stop.
size_t ReadCStringFromMemory (lldb::addr_t vm_addr, char *cstr, size_t cstr_max_len, Status &error)
 Read a NULL terminated C string from memory.
size_t ReadCStringFromMemory (lldb::addr_t vm_addr, std::string &out_str, Status &error)
uint64_t ReadUnsignedIntegerFromMemory (lldb::addr_t load_addr, size_t byte_size, uint64_t fail_value, Status &error)
 Reads an unsigned integer of the specified byte size from process memory.
int64_t ReadSignedIntegerFromMemory (lldb::addr_t load_addr, size_t byte_size, int64_t fail_value, Status &error)
lldb::addr_t ReadPointerFromMemory (lldb::addr_t vm_addr, Status &error)
bool WritePointerToMemory (lldb::addr_t vm_addr, lldb::addr_t ptr_value, Status &error)
virtual size_t DoWriteMemory (lldb::addr_t vm_addr, const void *buf, size_t size, Status &error)
 Actually do the writing of memory to a process.
size_t WriteScalarToMemory (lldb::addr_t vm_addr, const Scalar &scalar, size_t size, Status &error)
 Write all or part of a scalar value to memory.
size_t ReadScalarIntegerFromMemory (lldb::addr_t addr, uint32_t byte_size, bool is_signed, Scalar &scalar, Status &error)
size_t WriteMemory (lldb::addr_t vm_addr, const void *buf, size_t size, Status &error)
 Write memory to a process.
virtual lldb::addr_t DoAllocateMemory (size_t size, uint32_t permissions, Status &error)
 Actually allocate memory in the process.
virtual Status WriteObjectFile (std::vector< ObjectFile::LoadableData > entries)
lldb::addr_t AllocateMemory (size_t size, uint32_t permissions, Status &error)
 The public interface to allocating memory in the process.
lldb::addr_t CallocateMemory (size_t size, uint32_t permissions, Status &error)
 The public interface to allocating memory in the process, this also clears the allocated memory.
llvm::Expected< const MemoryTagManager * > GetMemoryTagManager ()
 If this architecture and process supports memory tagging, return a tag manager that can be used to maniupulate those memory tags.
virtual llvm::Expected< std::vector< lldb::addr_t > > ReadMemoryTags (lldb::addr_t addr, size_t len)
 Read memory tags for the range addr to addr+len.
Status WriteMemoryTags (lldb::addr_t addr, size_t len, const std::vector< lldb::addr_t > &tags)
 Write memory tags for a range of memory.
virtual lldb::addr_t ResolveIndirectFunction (const Address *address, Status &error)
 Resolve dynamically loaded indirect functions.
Status GetMemoryRegionInfo (lldb::addr_t load_addr, MemoryRegionInfo &range_info)
 Locate the memory region that contains load_addr.
virtual Status GetMemoryRegions (lldb_private::MemoryRegionInfos &region_list)
 Obtain all the mapped memory regions within this process.
virtual std::optional< uint32_t > GetWatchpointSlotCount ()
 Get the number of watchpoints supported by this target.
bool GetWatchpointReportedAfter ()
 Whether lldb will be notified about watchpoints after the instruction has completed executing, or if the instruction is rolled back and it is notified before it executes.
lldb::ModuleSP ReadModuleFromMemory (const FileSpec &file_spec, lldb::addr_t header_addr, size_t size_to_read=512)
virtual bool GetLoadAddressPermissions (lldb::addr_t load_addr, uint32_t &permissions)
 Attempt to get the attributes for a region of memory in the process.
bool CanJIT ()
 Determines whether executing JIT-compiled code in this process is possible.
void SetCanJIT (bool can_jit)
 Sets whether executing JIT-compiled code in this process is possible.
bool CanInterpretFunctionCalls ()
 Determines whether executing function calls using the interpreter is possible for this process.
void SetCanInterpretFunctionCalls (bool can_interpret_function_calls)
 Sets whether executing function calls using the interpreter is possible for this process.
void SetCanRunCode (bool can_run_code)
 Sets whether executing code in this process is possible.
virtual Status DoDeallocateMemory (lldb::addr_t ptr)
 Actually deallocate memory in the process.
Status DeallocateMemory (lldb::addr_t ptr)
 The public interface to deallocating memory in the process.
virtual size_t GetSTDOUT (char *buf, size_t buf_size, Status &error)
 Get any available STDOUT.
virtual size_t GetSTDERR (char *buf, size_t buf_size, Status &error)
 Get any available STDERR.
virtual size_t PutSTDIN (const char *buf, size_t buf_size, Status &error)
 Puts data into this process's STDIN.
virtual size_t GetAsyncProfileData (char *buf, size_t buf_size, Status &error)
 Get any available profile data.
size_t GetSoftwareBreakpointTrapOpcode (BreakpointSite *bp_site)
virtual Status EnableBreakpointSite (BreakpointSite *bp_site)
virtual Status DisableBreakpointSite (BreakpointSite *bp_site)
virtual Status EnableSoftwareBreakpoint (BreakpointSite *bp_site)
virtual Status DisableSoftwareBreakpoint (BreakpointSite *bp_site)
StopPointSiteList< lldb_private::BreakpointSite > & GetBreakpointSiteList ()
const StopPointSiteList< lldb_private::BreakpointSite > & GetBreakpointSiteList () const
void DisableAllBreakpointSites ()
Status ClearBreakpointSiteByID (lldb::user_id_t break_id)
lldb::break_id_t CreateBreakpointSite (const lldb::BreakpointLocationSP &owner, bool use_hardware)
Status DisableBreakpointSiteByID (lldb::user_id_t break_id)
Status EnableBreakpointSiteByID (lldb::user_id_t break_id)
void RemoveConstituentFromBreakpointSite (lldb::user_id_t site_id, lldb::user_id_t constituent_id, lldb::BreakpointSiteSP &bp_site_sp)
virtual Status EnableWatchpoint (lldb::WatchpointSP wp_sp, bool notify=true)
virtual Status DisableWatchpoint (lldb::WatchpointSP wp_sp, bool notify=true)
bool UpdateThreadList (ThreadList &old_thread_list, ThreadList &new_thread_list)
 Update the thread list.
void UpdateThreadListIfNeeded ()
ThreadListGetThreadList ()
StopPointSiteList< lldb_private::WatchpointResource > & GetWatchpointResourceList ()
ThreadListGetExtendedThreadList ()
ThreadList::ThreadIterable Threads ()
uint32_t GetNextThreadIndexID (uint64_t thread_id)
lldb::ThreadSP CreateOSPluginThread (lldb::tid_t tid, lldb::addr_t context)
bool HasAssignedIndexIDToThread (uint64_t sb_thread_id)
uint32_t AssignIndexIDToThread (uint64_t thread_id)
virtual void UpdateQueueListIfNeeded ()
QueueListGetQueueList ()
QueueList::QueueIterable Queues ()
lldb::StateType GetNextEvent (lldb::EventSP &event_sp)
lldb::StateType WaitForProcessToStop (const Timeout< std::micro > &timeout, lldb::EventSP *event_sp_ptr=nullptr, bool wait_always=true, lldb::ListenerSP hijack_listener=lldb::ListenerSP(), Stream *stream=nullptr, bool use_run_lock=true, SelectMostRelevant select_most_relevant=DoNoSelectMostRelevantFrame)
uint32_t GetIOHandlerID () const
void SyncIOHandler (uint32_t iohandler_id, const Timeout< std::micro > &timeout)
 Waits for the process state to be running within a given msec timeout.
lldb::StateType GetStateChangedEvents (lldb::EventSP &event_sp, const Timeout< std::micro > &timeout, lldb::ListenerSP hijack_listener)
EventPeekAtStateChangedEvents ()
bool HijackProcessEvents (lldb::ListenerSP listener_sp)
 If you need to ensure that you and only you will hear about some public event, then make a new listener, set to listen to process events, and then call this with that listener.
void RestoreProcessEvents ()
 Restores the process event broadcasting to its normal state.
bool StateChangedIsHijackedForSynchronousResume ()
bool StateChangedIsExternallyHijacked ()
const lldb::ABISPGetABI ()
OperatingSystemGetOperatingSystem ()
std::vector< LanguageRuntime * > GetLanguageRuntimes ()
LanguageRuntimeGetLanguageRuntime (lldb::LanguageType language)
bool IsPossibleDynamicValue (ValueObject &in_value)
bool IsRunning () const
DynamicCheckerFunctionsGetDynamicCheckers ()
void SetDynamicCheckers (DynamicCheckerFunctions *dynamic_checkers)
bool PruneThreadPlansForTID (lldb::tid_t tid)
 Prune ThreadPlanStacks for unreported threads.
void PruneThreadPlans ()
 Prune ThreadPlanStacks for all unreported threads.
ThreadPlanStackFindThreadPlans (lldb::tid_t tid)
 Find the thread plan stack associated with thread with tid.
bool DumpThreadPlansForTID (Stream &strm, lldb::tid_t tid, lldb::DescriptionLevel desc_level, bool internal, bool condense_trivial, bool skip_unreported_plans)
 Dump the thread plans associated with thread with tid.
void DumpThreadPlans (Stream &strm, lldb::DescriptionLevel desc_level, bool internal, bool condense_trivial, bool skip_unreported_plans)
 Dump all the thread plans for this process.
virtual bool StartNoticingNewThreads ()
 Call this to set the lldb in the mode where it breaks on new thread creations, and then auto-restarts.
virtual bool StopNoticingNewThreads ()
 Call this to turn off the stop & notice new threads mode.
void SetRunningUserExpression (bool on)
void SetRunningUtilityFunction (bool on)
lldb::TargetSP CalculateTarget () override
lldb::ProcessSP CalculateProcess () override
lldb::ThreadSP CalculateThread () override
lldb::StackFrameSP CalculateStackFrame () override
void CalculateExecutionContext (ExecutionContext &exe_ctx) override
 Reconstruct the object's execution context into sc.
void SetSTDIOFileDescriptor (int file_descriptor)
void AddInvalidMemoryRegion (const LoadRange &region)
bool RemoveInvalidMemoryRange (const LoadRange &region)
void AddPreResumeAction (PreResumeActionCallback callback, void *baton)
bool RunPreResumeActions ()
void ClearPreResumeActions ()
void ClearPreResumeAction (PreResumeActionCallback callback, void *baton)
ProcessRunLockGetRunLock ()
bool CurrentThreadIsPrivateStateThread ()
bool CurrentThreadPosesAsPrivateStateThread ()
virtual Status SendEventData (const char *data)
lldb::ThreadCollectionSP GetHistoryThreads (lldb::addr_t addr)
lldb::InstrumentationRuntimeSP GetInstrumentationRuntime (lldb::InstrumentationRuntimeType type)
virtual bool GetModuleSpec (const FileSpec &module_file_spec, const ArchSpec &arch, ModuleSpec &module_spec)
 Try to fetch the module specification for a module with the given file name and architecture.
virtual void PrefetchModuleSpecs (llvm::ArrayRef< FileSpec > module_file_specs, const llvm::Triple &triple)
virtual Status GetFileLoadAddress (const FileSpec &file, bool &is_loaded, lldb::addr_t &load_addr)
 Try to find the load address of a file.
virtual StructuredData::DictionarySP GetMetadata ()
 Fetch process defined metadata.
StructuredData::DictionarySP GetExtendedCrashInfoDict ()
 Fetch extended crash information held by the process.
void ResetExtendedCrashInfoDict ()
size_t AddImageToken (lldb::addr_t image_ptr)
lldb::addr_t GetImagePtrFromToken (size_t token) const
void ResetImageToken (size_t token)
Address AdvanceAddressToNextBranchInstruction (Address default_stop_addr, AddressRange range_bounds)
 Find the next branch instruction to set a breakpoint on.
virtual Status ConfigureStructuredData (llvm::StringRef type_name, const StructuredData::ObjectSP &config_sp)
 Configure asynchronous structured data feature.
void BroadcastStructuredData (const StructuredData::ObjectSP &object_sp, const lldb::StructuredDataPluginSP &plugin_sp)
 Broadcasts the given structured data object from the given plugin.
lldb::StructuredDataPluginSP GetStructuredDataPlugin (llvm::StringRef type_name) const
 Returns the StructuredDataPlugin associated with a given type name, if there is one.
virtual void * GetImplementation ()
virtual void ForceScriptedState (lldb::StateType state)
SourceManager::SourceFileCacheGetSourceFileCache ()
lldb::addr_t FindInMemory (lldb::addr_t low, lldb::addr_t high, const uint8_t *buf, size_t size)
 Find a pattern within a memory region.
AddressRanges FindRangesInMemory (const uint8_t *buf, uint64_t size, const AddressRanges &ranges, size_t alignment, size_t max_matches, Status &error)
lldb::addr_t FindInMemory (const uint8_t *buf, uint64_t size, const AddressRange &range, size_t alignment, Status &error)
lldb::RunDirection GetBaseDirection () const
 Get the base run direction for the process.
void SetBaseDirection (lldb::RunDirection direction)
 Set the base run direction for the process.
Public Member Functions inherited from lldb_private::ProcessProperties
 ProcessProperties (lldb_private::Process *process)
 ~ProcessProperties () override
bool GetDisableMemoryCache () const
uint64_t GetMemoryCacheLineSize () const
Args GetExtraStartupCommands () const
void SetExtraStartupCommands (const Args &args)
FileSpec GetPythonOSPluginPath () const
uint32_t GetVirtualAddressableBits () const
void SetVirtualAddressableBits (uint32_t bits)
uint32_t GetHighmemVirtualAddressableBits () const
void SetHighmemVirtualAddressableBits (uint32_t bits)
void SetPythonOSPluginPath (const FileSpec &file)
bool GetIgnoreBreakpointsInExpressions () const
void SetIgnoreBreakpointsInExpressions (bool ignore)
bool GetUnwindOnErrorInExpressions () const
void SetUnwindOnErrorInExpressions (bool ignore)
bool GetStopOnSharedLibraryEvents () const
void SetStopOnSharedLibraryEvents (bool stop)
bool GetDisableLangRuntimeUnwindPlans () const
void SetDisableLangRuntimeUnwindPlans (bool disable)
void DisableLanguageRuntimeUnwindPlansCallback ()
bool GetDetachKeepsStopped () const
void SetDetachKeepsStopped (bool keep_stopped)
bool GetWarningsOptimization () const
bool GetWarningsUnsupportedLanguage () const
bool GetStopOnExec () const
std::chrono::seconds GetUtilityExpressionTimeout () const
std::chrono::seconds GetInterruptTimeout () const
bool GetOSPluginReportsAllThreads () const
void SetOSPluginReportsAllThreads (bool does_report)
bool GetSteppingRunsAllThreads () const
FollowForkMode GetFollowForkMode () const
bool TrackMemoryCacheChanges () const
Public Member Functions inherited from lldb_private::Properties
 Properties ()
 Properties (const lldb::OptionValuePropertiesSP &collection_sp)
virtual ~Properties ()
lldb::OptionValuePropertiesSP GetValueProperties () const
virtual lldb::OptionValueSP GetPropertyValue (const ExecutionContext *exe_ctx, llvm::StringRef property_path, Status &error) const
virtual Status SetPropertyValue (const ExecutionContext *exe_ctx, VarSetOperationType op, llvm::StringRef property_path, llvm::StringRef value)
virtual Status DumpPropertyValue (const ExecutionContext *exe_ctx, Stream &strm, llvm::StringRef property_path, uint32_t dump_mask, bool is_json=false)
virtual void DumpAllPropertyValues (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask, bool is_json=false)
virtual void DumpAllDescriptions (CommandInterpreter &interpreter, Stream &strm) const
size_t Apropos (llvm::StringRef keyword, std::vector< const Property * > &matching_properties) const
template<typename T>
GetPropertyAtIndexAs (uint32_t idx, T default_value, const ExecutionContext *exe_ctx=nullptr) const
template<typename T, typename U = typename std::remove_pointer<T>::type, std::enable_if_t< std::is_pointer_v< T >, bool > = true>
const U * GetPropertyAtIndexAs (uint32_t idx, const ExecutionContext *exe_ctx=nullptr) const
template<typename T>
bool SetPropertyAtIndex (uint32_t idx, T t, const ExecutionContext *exe_ctx=nullptr) const
Public Member Functions inherited from lldb_private::Broadcaster
 Broadcaster (lldb::BroadcasterManagerSP manager_sp, std::string name)
 Construct with a broadcaster with a name.
virtual ~Broadcaster ()
 Destructor.
void CheckInWithManager ()
void BroadcastEvent (lldb::EventSP &event_sp)
 Broadcast an event which has no associated data.
void BroadcastEventIfUnique (lldb::EventSP &event_sp)
void BroadcastEvent (uint32_t event_type, const lldb::EventDataSP &event_data_sp)
void BroadcastEvent (uint32_t event_type)
void BroadcastEventIfUnique (uint32_t event_type)
void Clear ()
virtual void AddInitialEventsToListener (const lldb::ListenerSP &listener_sp, uint32_t requested_events)
uint32_t AddListener (const lldb::ListenerSP &listener_sp, uint32_t event_mask)
 Listen for any events specified by event_mask.
const std::string & GetBroadcasterName ()
 Get this broadcaster's name.
bool GetEventNames (Stream &s, const uint32_t event_mask, bool prefix_with_broadcaster_name) const
 Get the event name(s) for one or more event bits.
void SetEventName (uint32_t event_mask, const char *name)
 Set the name for an event bit.
const char * GetEventName (uint32_t event_mask) const
bool EventTypeHasListeners (uint32_t event_type)
bool RemoveListener (const lldb::ListenerSP &listener_sp, uint32_t event_mask=UINT32_MAX)
 Removes a Listener from this broadcasters list and frees the event bits specified by event_mask that were previously acquired by listener (assuming listener was listening to this object) for other listener objects to use.
bool HijackBroadcaster (const lldb::ListenerSP &listener_sp, uint32_t event_mask=UINT32_MAX)
 Provides a simple mechanism to temporarily redirect events from broadcaster.
bool IsHijackedForEvent (uint32_t event_mask)
void RestoreBroadcaster ()
 Restore the state of the Broadcaster from a previous hijack attempt.
lldb::BroadcasterManagerSP GetManager ()
void SetPrimaryListener (lldb::ListenerSP listener_sp)
lldb::ListenerSP GetPrimaryListener ()
Public Member Functions inherited from lldb_private::ExecutionContextScope
virtual ~ExecutionContextScope ()=default
Public Member Functions inherited from lldb_private::PluginInterface
 PluginInterface ()=default
virtual ~PluginInterface ()=default
virtual llvm::StringRef GetPluginName ()=0
 PluginInterface (const PluginInterface &)=delete
PluginInterfaceoperator= (const PluginInterface &)=delete

Static Public Member Functions

static llvm::StringRef GetStaticBroadcasterClass ()
static void SettingsInitialize ()
static void SettingsTerminate ()
static ProcessPropertiesGetGlobalProperties ()
static lldb::ProcessSP FindPlugin (lldb::TargetSP target_sp, llvm::StringRef plugin_name, lldb::ListenerSP listener_sp, const FileSpec *crash_file_path, bool can_connect)
 Find a Process plug-in that can debug module using the currently selected architecture.
static bool SetProcessExitStatus (lldb::pid_t pid, bool exited, int signo, int status)
 Static function that can be used with the host function Host::StartMonitoringChildProcess ().
static bool HandleProcessStateChangedEvent (const lldb::EventSP &event_sp, Stream *stream, SelectMostRelevant select_most_relevant, bool &pop_process_io_handler)
 Centralize the code that handles and prints descriptions for process state changes.
Static Public Member Functions inherited from lldb_private::Properties
static llvm::StringRef GetExperimentalSettingsName ()
static bool IsSettingExperimental (llvm::StringRef setting)

Static Public Attributes

static constexpr int g_all_event_bits
static constexpr llvm::StringRef AttachSynchronousHijackListenerName
static constexpr llvm::StringRef LaunchSynchronousHijackListenerName
static constexpr llvm::StringRef ResumeSynchronousHijackListenerName

Protected Types

enum  { eCanJITDontKnow = 0 , eCanJITYes , eCanJITNo }
typedef std::map< lldb::LanguageType, lldb::LanguageRuntimeSPLanguageRuntimeCollection
Protected Types inherited from lldb_private::Broadcaster
typedef std::shared_ptr< BroadcasterImplBroadcasterImplSP
typedef std::weak_ptr< BroadcasterImplBroadcasterImplWP

Protected Member Functions

virtual JITLoaderListGetJITLoaders ()
 Process (lldb::TargetSP target_sp, lldb::ListenerSP listener_sp)
 Construct with a shared pointer to a target, and the Process listener.
 Process (lldb::TargetSP target_sp, lldb::ListenerSP listener_sp, const lldb::UnixSignalsSP &unix_signals_sp)
 Construct with a shared pointer to a target, the Process listener, and the appropriate UnixSignalsSP for the process.
virtual llvm::Expected< TraceSupportedResponseTraceSupported ()
 Get the processor tracing type supported for this process.
virtual llvm::Error TraceStart (const llvm::json::Value &request)
 Start tracing a process or its threads.
virtual llvm::Error TraceStop (const TraceStopRequest &request)
 Stop tracing a live process or its threads.
virtual llvm::Expected< std::string > TraceGetState (llvm::StringRef type)
 Get the current tracing state of the process and its threads.
virtual llvm::Expected< std::vector< uint8_t > > TraceGetBinaryData (const TraceGetBinaryDataRequest &request)
 Get binary data given a trace technology and a data identifier.
bool CallVoidArgVoidPtrReturn (const Address *address, lldb::addr_t &returned_func, bool trap_exceptions=false)
virtual bool DoUpdateThreadList (ThreadList &old_thread_list, ThreadList &new_thread_list)=0
 Update the thread list following process plug-in's specific logic.
virtual size_t DoReadMemory (lldb::addr_t vm_addr, void *buf, size_t size, Status &error)=0
 Actually do the reading of memory from a process.
virtual void DoFindInMemory (lldb::addr_t start_addr, lldb::addr_t end_addr, const uint8_t *buf, size_t size, AddressRanges &matches, size_t alignment, size_t max_matches)
virtual Status DoGetMemoryRegionInfo (lldb::addr_t load_addr, MemoryRegionInfo &range_info)
 DoGetMemoryRegionInfo is called by GetMemoryRegionInfo after it has removed non address bits from load_addr.
virtual std::optional< boolDoGetWatchpointReportedAfter ()
 Provide an override value in the subclass for lldb's CPU-based logic for whether watchpoint exceptions are received before or after an instruction executes.
virtual lldb::ThreadSP HandleThreadAsyncInterrupt (uint8_t signo, const std::string &description)
 Handle thread specific async interrupt and return the original thread that requested the async interrupt.
lldb::StateType GetPrivateState ()
Status PrivateResume ()
 The "private" side of resuming a process.
void CompleteAttach ()
void SetNextEventAction (Process::NextEventAction *next_event_action)
bool PrivateStateThreadIsValid () const
void ForceNextEventDelivery ()
void MapSupportedStructuredDataPlugins (const StructuredData::Array &supported_type_names)
 Loads any plugins associated with asynchronous structured data and maps the relevant supported type name to the plugin.
bool RouteAsyncStructuredData (const StructuredData::ObjectSP object_sp)
 Route the incoming structured data dictionary to the right plugin.
virtual bool SupportsMemoryTagging ()
 Check whether the process supports memory tagging.
virtual llvm::Expected< std::vector< uint8_t > > DoReadMemoryTags (lldb::addr_t addr, size_t len, int32_t type)
 Does the final operation to read memory tags.
virtual Status DoWriteMemoryTags (lldb::addr_t addr, size_t len, int32_t type, const std::vector< uint8_t > &tags)
 Does the final operation to write memory tags.
size_t RemoveBreakpointOpcodesFromBuffer (lldb::addr_t addr, size_t size, uint8_t *buf) const
void SynchronouslyNotifyStateChanged (lldb::StateType state)
void SetPublicState (lldb::StateType new_state, bool restarted)
void SetPrivateState (lldb::StateType state)
bool StartPrivateStateThread (bool is_secondary_thread=false)
void StopPrivateStateThread ()
void PausePrivateStateThread ()
void ResumePrivateStateThread ()
void HandlePrivateEvent (lldb::EventSP &event_sp)
Status HaltPrivate ()
lldb::StateType WaitForProcessStopPrivate (lldb::EventSP &event_sp, const Timeout< std::micro > &timeout)
bool GetEventsPrivate (lldb::EventSP &event_sp, const Timeout< std::micro > &timeout, bool control_only)
lldb::StateType GetStateChangedEventsPrivate (lldb::EventSP &event_sp, const Timeout< std::micro > &timeout)
size_t WriteMemoryPrivate (lldb::addr_t addr, const void *buf, size_t size, Status &error)
void AppendSTDOUT (const char *s, size_t len)
void AppendSTDERR (const char *s, size_t len)
void BroadcastAsyncProfileData (const std::string &one_profile_data)
bool PushProcessIOHandler ()
bool PopProcessIOHandler ()
bool ProcessIOHandlerIsActive ()
bool ProcessIOHandlerExists () const
Status StopForDestroyOrDetach (lldb::EventSP &exit_event_sp)
virtual Status UpdateAutomaticSignalFiltering ()
void LoadOperatingSystemPlugin (bool flush)
void SetAddressableBitMasks (AddressableBits bit_masks)
Protected Member Functions inherited from lldb_private::Broadcaster
BroadcasterImplSP GetBroadcasterImpl ()
const char * GetHijackingListenerName ()

Static Protected Member Functions

static void STDIOReadThreadBytesReceived (void *baton, const void *src, size_t src_len)

Protected Attributes

std::weak_ptr< Targetm_target_wp
 The target that owns this process.
lldb::pid_t m_pid = LLDB_INVALID_PROCESS_ID
ThreadSafeValue< lldb::StateTypem_public_state
ThreadSafeValue< lldb::StateTypem_private_state
Broadcaster m_private_state_broadcaster
Broadcaster m_private_state_control_broadcaster
lldb::ListenerSP m_private_state_listener_sp
HostThread m_private_state_thread
 Thread ID for the thread that watches internal state events.
ProcessModID m_mod_id
 Tracks the state of the process over stops and other alterations.
uint32_t m_process_unique_id
 Each lldb_private::Process class that is created gets a unique integer ID that increments with each new instance.
uint32_t m_thread_index_id
 Each thread is created with a 1 based index that won't get re-used.
std::map< uint64_t, uint32_t > m_thread_id_to_index_id_map
int m_exit_status
 The exit status of the process, or -1 if not set.
std::string m_exit_string
 A textual description of why a process exited.
std::mutex m_exit_status_mutex
 Mutex so m_exit_status m_exit_string can be safely accessed from multiple threads.
std::recursive_mutex m_thread_mutex
ThreadList m_thread_list_real
 The threads for this process as are known to the protocol we are debugging with.
ThreadList m_thread_list
 The threads for this process as the user will see them.
ThreadPlanStackMap m_thread_plans
 This is the list of thread plans for threads in m_thread_list, as well as threads we knew existed, but haven't determined that they have died yet.
ThreadList m_extended_thread_list
 Constituent for extended threads that may be generated, cleared on natural stops.
lldb::RunDirection m_base_direction
 ThreadPlanBase run direction.
uint32_t m_extended_thread_stop_id
 The natural stop id when extended_thread_list was last updated.
QueueList m_queue_list
 The list of libdispatch queues at a given stop point.
uint32_t m_queue_list_stop_id
 The natural stop id when queue list was last fetched.
StopPointSiteList< lldb_private::WatchpointResourcem_watchpoint_resource_list
 Watchpoint resources currently in use.
std::vector< Notificationsm_notifications
 The list of notifications that this process can deliver.
std::vector< lldb::addr_tm_image_tokens
StopPointSiteList< lldb_private::BreakpointSitem_breakpoint_site_list
 This is the list of breakpoint locations we intend to insert in the target.
lldb::DynamicLoaderUP m_dyld_up
lldb::JITLoaderListUP m_jit_loaders_up
lldb::DynamicCheckerFunctionsUP m_dynamic_checkers_up
 The functions used by the expression parser to validate data that expressions use.
lldb::OperatingSystemUP m_os_up
lldb::SystemRuntimeUP m_system_runtime_up
lldb::UnixSignalsSP m_unix_signals_sp
lldb::ABISP m_abi_sp
 This is the current signal set for this process.
lldb::IOHandlerSP m_process_input_reader
std::mutex m_process_input_reader_mutex
ThreadedCommunication m_stdio_communication
std::recursive_mutex m_stdio_communication_mutex
bool m_stdin_forward
std::string m_stdout_data
 Remember if stdin must be forwarded to remote debug server.
std::string m_stderr_data
std::recursive_mutex m_profile_data_comm_mutex
std::vector< std::string > m_profile_data
Predicate< uint32_t > m_iohandler_sync
MemoryCache m_memory_cache
AllocatedMemoryCache m_allocated_memory_cache
bool m_should_detach
LanguageRuntimeCollection m_language_runtimes
 Should we detach if the process object goes away with an explicit call to Kill or Detach?
std::recursive_mutex m_language_runtimes_mutex
InstrumentationRuntimeCollection m_instrumentation_runtimes
std::unique_ptr< NextEventActionm_next_event_action_up
std::vector< PreResumeCallbackAndBatonm_pre_resume_actions
ProcessRunLock m_public_run_lock
ProcessRunLock m_private_run_lock
bool m_currently_handling_do_on_removals
bool m_resume_requested
lldb::tid_t m_interrupt_tid
std::atomic< boolm_finalizing
 The tid of the thread that issued the async interrupt, used by thread plan timeout.
std::atomic< boolm_destructing
bool m_clear_thread_plans_on_stop
bool m_force_next_event_delivery
lldb::StateType m_last_broadcast_state
std::map< lldb::addr_t, lldb::addr_tm_resolved_indirect_addresses
 This helps with the Public event coalescing in ShouldBroadcastEvent.
bool m_destroy_in_process
bool m_can_interpret_function_calls
std::mutex m_run_thread_plan_lock
llvm::StringMap< lldb::StructuredDataPluginSPm_structured_data_plugin_map
enum lldb_private::Process:: { ... }  m_can_jit
std::unique_ptr< UtilityFunctionm_dlopen_utility_func_up
llvm::once_flag m_dlopen_utility_func_flag_once
SourceManager::SourceFileCache m_source_file_cache
 Per process source file cache.
StructuredData::DictionarySP m_crash_info_dict_sp
 A repository for extra crash information, consulted in GetExtendedCrashInformation.
lldb::addr_t m_code_address_mask = LLDB_INVALID_ADDRESS_MASK
 Mask for code an data addresses.
lldb::addr_t m_data_address_mask = LLDB_INVALID_ADDRESS_MASK
lldb::addr_t m_highmem_code_address_mask = LLDB_INVALID_ADDRESS_MASK
lldb::addr_t m_highmem_data_address_mask = LLDB_INVALID_ADDRESS_MASK
Protected Attributes inherited from lldb_private::ProcessProperties
Processm_process
std::unique_ptr< ProcessExperimentalPropertiesm_experimental_properties_up
Protected Attributes inherited from lldb_private::Properties
lldb::OptionValuePropertiesSP m_collection_sp

Private Member Functions

lldb::thread_result_t RunPrivateStateThread (bool is_secondary_thread)
Status DestroyImpl (bool force_kill)
bool ShouldBroadcastEvent (Event *event_ptr)
 This is the part of the event handling that for a process event.
void ControlPrivateStateThread (uint32_t signal)
Status LaunchPrivate (ProcessLaunchInfo &launch_info, lldb::StateType &state, lldb::EventSP &event_sp)
lldb::EventSP CreateEventFromProcessState (uint32_t event_type)
 Process (const Process &)=delete
const Processoperator= (const Process &)=delete

Friends

class FunctionCaller
class Debugger
class DynamicLoader
class ProcessEventData
class StopInfo
class Target
class ThreadList
class ProcessEventHijacker
class ProcessProperties
class Trace

Detailed Description

A plug-in interface definition class for debugging a process.

Definition at line 353 of file Process.h.

Member Typedef Documentation

◆ LanguageRuntimeCollection

◆ LoadRange

◆ PreResumeActionCallback

typedef bool lldb_private::Process::PreResumeActionCallback(void *)

Definition at line 2537 of file Process.h.

◆ ReadMemoryChunkCallback

typedef std::function<IterationAction( lldb_private::Status &error, lldb::addr_t bytes_addr, const void *bytes, lldb::offset_t bytes_size)> lldb_private::Process::ReadMemoryChunkCallback

Definition at line 1614 of file Process.h.

◆ StopLocker

Member Enumeration Documentation

◆ anonymous enum

anonymous enum

Broadcaster event bits definitions.

Enumerator
eBroadcastBitStateChanged 
eBroadcastBitInterrupt 
eBroadcastBitSTDOUT 
eBroadcastBitSTDERR 
eBroadcastBitProfileData 
eBroadcastBitStructuredData 

Definition at line 368 of file Process.h.

◆ anonymous enum

anonymous enum
Enumerator
eBroadcastInternalStateControlStop 
eBroadcastInternalStateControlPause 
eBroadcastInternalStateControlResume 

Definition at line 383 of file Process.h.

◆ anonymous enum

anonymous enum
protected
Enumerator
eCanJITDontKnow 
eCanJITYes 
eCanJITNo 

Definition at line 3262 of file Process.h.

Constructor & Destructor Documentation

◆ ~Process()

Process::~Process ( )
override

Destructor.

The destructor is virtual since this class is designed to be inherited from by the plug-in instance.

Definition at line 519 of file Process.cpp.

References lldb_private::GetLog(), LLDB_LOGF, m_thread_list, lldb_private::Object, and StopPrivateStateThread().

◆ Process() [1/3]

◆ Process() [2/3]

Process::Process ( lldb::TargetSP target_sp,
lldb::ListenerSP listener_sp,
const lldb::UnixSignalsSP & unix_signals_sp )
protected

Construct with a shared pointer to a target, the Process listener, and the appropriate UnixSignalsSP for the process.

Definition at line 433 of file Process.cpp.

References lldb_private::Broadcaster::Broadcaster(), lldb_private::Broadcaster::CheckInWithManager(), eBroadcastBitInterrupt, eBroadcastBitProfileData, eBroadcastBitStateChanged, eBroadcastBitSTDERR, eBroadcastBitSTDOUT, eBroadcastBitStructuredData, eBroadcastInternalStateControlPause, eBroadcastInternalStateControlResume, eBroadcastInternalStateControlStop, eCanJITDontKnow, lldb::eRunForward, lldb::eStateInvalid, lldb::eStateUnloaded, lldb_private::GetLog(), GetStaticBroadcasterClass(), lldb_private::Broadcaster::Listener, LLDB_INVALID_THREAD_ID, LLDB_LOGF, m_abi_sp, m_allocated_memory_cache, m_base_direction, m_can_interpret_function_calls, m_can_jit, m_clear_thread_plans_on_stop, lldb_private::Properties::m_collection_sp, m_crash_info_dict_sp, m_currently_handling_do_on_removals, m_destroy_in_process, m_destructing, m_exit_status, m_extended_thread_list, m_extended_thread_stop_id, m_finalizing, m_force_next_event_delivery, m_interrupt_tid, m_iohandler_sync, m_last_broadcast_state, m_memory_cache, m_mod_id, m_next_event_action_up, m_private_run_lock, m_private_state, m_private_state_broadcaster, m_private_state_control_broadcaster, m_private_state_listener_sp, m_process_input_reader, m_process_unique_id, m_profile_data, m_profile_data_comm_mutex, m_public_run_lock, m_public_state, m_queue_list, m_queue_list_stop_id, m_resume_requested, m_run_thread_plan_lock, m_should_detach, m_stderr_data, m_stdin_forward, m_stdio_communication, m_stdio_communication_mutex, m_stdout_data, m_target_wp, m_thread_id_to_index_id_map, m_thread_index_id, m_thread_list, m_thread_list_real, m_thread_plans, m_unix_signals_sp, lldb_private::Object, Process(), ProcessProperties, lldb_private::RegisterAssertFrameRecognizer(), lldb_private::RegisterVerboseTrapFrameRecognizer(), lldb_private::Broadcaster::SetEventName(), and lldb_private::Broadcaster::SetPrimaryListener().

◆ Process() [3/3]

lldb_private::Process::Process ( const Process & )
privatedelete

References Process().

Member Function Documentation

◆ AddImageToken()

size_t Process::AddImageToken ( lldb::addr_t image_ptr)

Definition at line 6146 of file Process.cpp.

References m_image_tokens.

Referenced by lldb_private::PlatformWindows::DoLoadImage().

◆ AddInvalidMemoryRegion()

void Process::AddInvalidMemoryRegion ( const LoadRange & region)

◆ AddPreResumeAction()

void Process::AddPreResumeAction ( PreResumeActionCallback callback,
void * baton )

Definition at line 5842 of file Process.cpp.

References m_pre_resume_actions.

◆ AdvanceAddressToNextBranchInstruction()

Address Process::AdvanceAddressToNextBranchInstruction ( Address default_stop_addr,
AddressRange range_bounds )

Find the next branch instruction to set a breakpoint on.

When instruction stepping through a source line, instead of stepping through each instruction, we can put a breakpoint on the next branch instruction (within the range of instructions we are stepping through) and continue the process to there, yielding significant performance benefits over instruction stepping.

Parameters
[in]default_stop_addrThe address of the instruction where lldb would put a breakpoint normally.
[in]range_boundsThe range which the breakpoint must be contained within. Typically a source line.
Returns
The address of the next branch instruction, or the end of the range provided in range_bounds. If there are any problems with the disassembly or getting the instructions, the original default_stop_addr will be returned.

Definition at line 6163 of file Process.cpp.

References lldb_private::AddressRange::ContainsFileAddress(), lldb_private::Disassembler::DisassembleRange(), lldb_private::Target::GetArchitecture(), lldb_private::InstructionList::GetIndexOfInstructionAtAddress(), lldb_private::InstructionList::GetIndexOfNextBranchInstruction(), lldb_private::InstructionList::GetInstructionAtIndex(), GetTarget(), lldb_private::TargetProperties::GetUseFastStepping(), lldb_private::Address::IsValid(), Target, and UINT32_MAX.

◆ AllocateMemory()

addr_t Process::AllocateMemory ( size_t size,
uint32_t permissions,
Status & error )

The public interface to allocating memory in the process.

This function will allocate memory in the process's address space. This can't rely on the generic function calling mechanism, since that requires this function.

Parameters
[in]sizeThe size of the allocation requested.
[in]permissionsOr together any of the lldb::Permissions bits. The permissions on a given memory allocation can't be changed after allocation. Note that a block that isn't set writable can still be written on from lldb, just not by the process itself.
[in,out]errorAn error object to fill in if things go wrong.
Returns
The address of the allocated buffer in the process, or LLDB_INVALID_ADDRESS if the allocation failed.

Definition at line 2436 of file Process.cpp.

References error(), lldb::eStateStopped, lldb_private::Status::FromErrorString(), GetPrivateState(), LLDB_INVALID_ADDRESS, and m_allocated_memory_cache.

Referenced by CallocateMemory(), CanJIT(), lldb_private::PlatformWindows::DoLoadImage(), and lldb_private::FunctionCaller::WriteFunctionArguments().

◆ AppendSTDERR()

void Process::AppendSTDERR ( const char * s,
size_t len )
protected

◆ AppendSTDOUT()

◆ AssignIndexIDToThread()

uint32_t Process::AssignIndexIDToThread ( uint64_t thread_id)

◆ Attach()

Status Process::Attach ( ProcessAttachInfo & attach_info)
virtual

Attach to an existing process using the process attach info.

This function is not meant to be overridden by Process subclasses. It will first call WillAttach (lldb::pid_t) or WillAttach (const char *), and if that returns true, DoAttach (lldb::pid_t) or DoAttach (const char *) will be called to actually do the attach. If DoAttach returns true, then Process::DidAttach() will be called.

Parameters
[in]attach_infoThe process attach info.
Returns
Returns pid if attaching was successful, or LLDB_INVALID_PROCESS_ID if attaching fails.

Definition at line 2950 of file Process.cpp.

References lldb_private::Target::ClearAllLoadedSections(), DoAttachToProcessWithID(), DoAttachToProcessWithName(), lldb_private::ProcessInstanceInfo::DumpTableHeader(), lldb_private::Equals, error(), lldb::eStateAttaching, lldb_private::Status::FromErrorString(), lldb_private::Status::FromErrorStringWithFormat(), lldb_private::StreamString::GetData(), lldb_private::ProcessInfo::GetExecutableFile(), GetID(), lldb_private::FileSpec::GetPath(), lldb_private::ProcessInfo::GetProcessID(), lldb_private::ProcessInstanceInfoMatch::GetProcessInfo(), lldb_private::ProcessAttachInfo::GetResumeCount(), GetTarget(), lldb_private::ProcessAttachInfo::GetWaitForLaunch(), LLDB_INVALID_PROCESS_ID, m_abi_sp, m_dyld_up, m_jit_loaders_up, m_os_up, m_process_input_reader, m_process_input_reader_mutex, m_public_run_lock, m_should_detach, m_system_runtime_up, PATH_MAX, SetExitStatus(), SetID(), lldb_private::ProcessInstanceInfoMatch::SetNameMatchType(), SetNextEventAction(), SetPublicState(), StartPrivateStateThread(), WillAttachToProcessWithID(), and WillAttachToProcessWithName().

◆ BroadcastAsyncProfileData()

void Process::BroadcastAsyncProfileData ( const std::string & one_profile_data)
protected

◆ BroadcastStructuredData()

void Process::BroadcastStructuredData ( const StructuredData::ObjectSP & object_sp,
const lldb::StructuredDataPluginSP & plugin_sp )

Broadcasts the given structured data object from the given plugin.

StructuredDataPlugin instances can use this to optionally broadcast any of their data if they want to make it available for clients. The data will come in on the structured data event bit (eBroadcastBitStructuredData).

Parameters
[in]object_spThe structured data object to broadcast.
[in]plugin_spThe plugin that will be reported in the event's plugin parameter.

Definition at line 4547 of file Process.cpp.

References lldb_private::Broadcaster::BroadcastEvent(), and eBroadcastBitStructuredData.

Referenced by lldb_private::StructuredDataDarwinLog::HandleArrivalOfStructuredData().

◆ CalculateCoreFileSaveRanges()

◆ CalculateCoreFileThreadList()

std::vector< ThreadSP > Process::CalculateCoreFileThreadList ( const SaveCoreOptions & core_options)

Helper function for Process::SaveCore(...) that calculates the thread list based upon options set within a given core_options object.

Note
If there is no thread list defined, all threads will be saved.

Definition at line 6792 of file Process.cpp.

References m_thread_list, and lldb_private::SaveCoreOptions::ShouldThreadBeSaved().

◆ CalculateExecutionContext()

void Process::CalculateExecutionContext ( ExecutionContext & exe_ctx)
overridevirtual

Reconstruct the object's execution context into sc.

The object should fill in as much of the ExecutionContextScope as it can so function calls that require a execution context can be made for the given object.

Parameters
[out]exe_ctxA reference to an execution context object that gets filled in.

Implements lldb_private::ExecutionContextScope.

Definition at line 4494 of file Process.cpp.

References GetTarget(), lldb_private::ExecutionContext::SetFramePtr(), lldb_private::ExecutionContext::SetProcessPtr(), lldb_private::ExecutionContext::SetTargetPtr(), and lldb_private::ExecutionContext::SetThreadPtr().

◆ CalculateProcess()

lldb::ProcessSP lldb_private::Process::CalculateProcess ( )
inlineoverridevirtual

Implements lldb_private::ExecutionContextScope.

Definition at line 2508 of file Process.h.

◆ CalculateStackFrame()

lldb::StackFrameSP lldb_private::Process::CalculateStackFrame ( )
inlineoverridevirtual

Implements lldb_private::ExecutionContextScope.

Definition at line 2512 of file Process.h.

◆ CalculateTarget()

lldb::TargetSP Process::CalculateTarget ( )
overridevirtual

Implements lldb_private::ExecutionContextScope.

Definition at line 4492 of file Process.cpp.

References m_target_wp.

Referenced by lldb_private::ProcessWindows::OnExitProcess().

◆ CalculateThread()

lldb::ThreadSP lldb_private::Process::CalculateThread ( )
inlineoverridevirtual

Implements lldb_private::ExecutionContextScope.

Definition at line 2510 of file Process.h.

◆ CallocateMemory()

addr_t Process::CallocateMemory ( size_t size,
uint32_t permissions,
Status & error )

The public interface to allocating memory in the process, this also clears the allocated memory.

This function will allocate memory in the process's address space. This can't rely on the generic function calling mechanism, since that requires this function.

Parameters
[in]sizeThe size of the allocation requested.
[in]permissionsOr together any of the lldb::Permissions bits. The permissions on a given memory allocation can't be changed after allocation. Note that a block that isn't set writable can still be written on from lldb, just not by the process itself.
[in,out]errorAn error object to fill in if things go wrong.
Returns
The address of the allocated buffer in the process, or LLDB_INVALID_ADDRESS if the allocation failed.

Definition at line 2447 of file Process.cpp.

References AllocateMemory(), error(), and WriteMemory().

◆ CallVoidArgVoidPtrReturn()

◆ CanDebug()

virtual bool lldb_private::Process::CanDebug ( lldb::TargetSP target,
bool plugin_specified_by_name )
pure virtual

Check if a plug-in instance can debug the file in module.

Each plug-in is given a chance to say whether it can debug the file in module. If the Process plug-in instance can debug a file on the current system, it should return true.

Returns
Returns true if this Process plug-in instance can debug the executable, false otherwise.

Implemented in lldb_private::minidump::ProcessMinidump, lldb_private::process_gdb_remote::ProcessGDBRemote, lldb_private::ProcessTrace, lldb_private::ProcessWindows, lldb_private::ScriptedProcess, lldb_private::wasm::ProcessWasm, ProcessElfCore, ProcessFreeBSDKernel, ProcessKDP, and ProcessMachCore.

◆ CanInterpretFunctionCalls()

bool lldb_private::Process::CanInterpretFunctionCalls ( )
inline

Determines whether executing function calls using the interpreter is possible for this process.

Returns
True if possible; false otherwise.

Definition at line 2041 of file Process.h.

References m_can_interpret_function_calls.

Referenced by lldb_private::ClangExpressionParser::DoPrepareForExecution().

◆ CanJIT()

bool Process::CanJIT ( )

Determines whether executing JIT-compiled code in this process is possible.

Returns
True if execution of JIT code is possible; false otherwise.

Definition at line 2457 of file Process.cpp.

References AllocateMemory(), lldb_private::Status::AsCString(), DeallocateMemory(), eCanJITDontKnow, eCanJITNo, eCanJITYes, GetID(), lldb_private::GetLog(), LLDB_LOGF, m_can_jit, lldb_private::Process, and lldb_private::Status::Success().

Referenced by lldb_private::UserExpression::Evaluate().

◆ ClearBreakpointSiteByID()

Status Process::ClearBreakpointSiteByID ( lldb::user_id_t break_id)

Definition at line 1576 of file Process.cpp.

References DisableBreakpointSiteByID(), error(), and m_breakpoint_site_list.

◆ ClearPreResumeAction()

void Process::ClearPreResumeAction ( PreResumeActionCallback callback,
void * baton )

Definition at line 5861 of file Process.cpp.

References m_pre_resume_actions.

◆ ClearPreResumeActions()

void Process::ClearPreResumeActions ( )

Definition at line 5859 of file Process.cpp.

References m_pre_resume_actions.

◆ CompleteAttach()

◆ ConfigureStructuredData()

Status Process::ConfigureStructuredData ( llvm::StringRef type_name,
const StructuredData::ObjectSP & config_sp )
virtual

Configure asynchronous structured data feature.

Each Process type that supports using an asynchronous StructuredData feature should implement this to enable/disable/configure the feature. The default implementation here will always return an error indiciating the feature is unsupported.

StructuredDataPlugin implementations will call this to configure a feature that has been reported as being supported.

Parameters
[in]type_nameThe StructuredData type name as previously discovered by the Process-derived instance.
[in]config_spConfiguration data for the feature being enabled. This config data, which may be null, will be passed along to the feature to process. The feature will dictate whether this is a dictionary, an array or some other object. If the feature needs to be set up properly before it can be enabled, then the config should also take an enable/disable flag.
Returns
Returns the result of attempting to configure the feature.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 6263 of file Process.cpp.

References lldb_private::Status::FromErrorString().

◆ ConnectRemote()

Status Process::ConnectRemote ( llvm::StringRef remote_url)
virtual

Attach to a remote system via a URL.

Parameters
[in]remote_urlThe URL format that we are connecting to.
Returns
Returns an error object.

Definition at line 3199 of file Process.cpp.

References CompleteAttach(), DoConnectRemote(), error(), lldb::eStateCrashed, lldb::eStateStopped, GetID(), HandlePrivateEvent(), LLDB_INVALID_PROCESS_ID, m_abi_sp, m_process_input_reader, m_process_input_reader_mutex, PrivateStateThreadIsValid(), ResumePrivateStateThread(), StartPrivateStateThread(), and WaitForProcessStopPrivate().

◆ ControlPrivateStateThread()

◆ CreateBreakpointSite()

◆ CreateEventFromProcessState()

EventSP Process::CreateEventFromProcessState ( uint32_t event_type)
private

Definition at line 4520 of file Process.cpp.

References GetState().

Referenced by AppendSTDERR(), AppendSTDOUT(), and BroadcastAsyncProfileData().

◆ CreateOSPluginThread()

ThreadSP Process::CreateOSPluginThread ( lldb::tid_t tid,
lldb::addr_t context )

◆ CurrentThreadIsPrivateStateThread()

bool Process::CurrentThreadIsPrivateStateThread ( )

Definition at line 5877 of file Process.cpp.

References lldb_private::Host::GetCurrentThread(), and m_private_state_thread.

Referenced by GetRunLock().

◆ CurrentThreadPosesAsPrivateStateThread()

bool Process::CurrentThreadPosesAsPrivateStateThread ( )

Definition at line 5882 of file Process.cpp.

References lldb_private::Host::GetCurrentThread(), and m_private_state_thread.

Referenced by GetState().

◆ DeallocateMemory()

Status Process::DeallocateMemory ( lldb::addr_t ptr)

The public interface to deallocating memory in the process.

This function will deallocate memory in the process's address space that was allocated with AllocateMemory.

Parameters
[in]ptrA return value from AllocateMemory, pointing to the memory you want to deallocate.
Returns
true if the memory was deallocated, false otherwise.

Definition at line 2495 of file Process.cpp.

References error(), lldb_private::Status::FromErrorStringWithFormat(), and m_allocated_memory_cache.

Referenced by CanJIT(), lldb_private::FunctionCaller::DeallocateFunctionResults(), and lldb_private::PlatformWindows::DoLoadImage().

◆ Destroy()

Status Process::Destroy ( bool force_kill)

Kills the process and shuts down all threads that were spawned to track and monitor the process.

This function is not meant to be overridden by Process subclasses.

Parameters
[in]force_killWhether lldb should force a kill (instead of a detach) from the inferior process. Normally if lldb launched a binary and Destroy is called, lldb kills it. If lldb attached to a running process and Destroy is called, lldb detaches. If this behavior needs to be over-ridden, this is the bool that can be used.
Returns
Returns an error object.

Definition at line 3515 of file Process.cpp.

References DestroyImpl(), and m_finalizing.

Referenced by CommandObjectProcessKill::DoExecute(), Halt(), LaunchPrivate(), and CommandObjectProcessLaunchOrAttach::StopProcessIfNecessary().

◆ DestroyImpl()

◆ DestroyRequiresHalt()

virtual bool lldb_private::Process::DestroyRequiresHalt ( )
inlinevirtual

Reimplemented in lldb_private::ProcessWindows.

Definition at line 1229 of file Process.h.

Referenced by DestroyImpl().

◆ Detach()

Status Process::Detach ( bool keep_stopped)

Detaches from a running or stopped process.

This function is not meant to be overridden by Process subclasses.

Parameters
[in]keep_stoppedIf true, don't resume the process on detach.
Returns
Returns an error object.

Definition at line 3463 of file Process.cpp.

References lldb_private::Broadcaster::BroadcastEvent(), DetachRequiresHalt(), DidDetach(), DisableAllBreakpointSites(), DoDetach(), error(), m_destroy_in_process, m_public_run_lock, m_thread_list, StopForDestroyOrDetach(), StopPrivateStateThread(), and WillDetach().

Referenced by DestroyImpl(), CommandObjectProcessDetach::DoExecute(), and CommandObjectProcessLaunchOrAttach::StopProcessIfNecessary().

◆ DetachRequiresHalt()

virtual bool lldb_private::Process::DetachRequiresHalt ( )
inlinevirtual

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 1200 of file Process.h.

Referenced by Detach().

◆ DidAttach()

virtual void lldb_private::Process::DidAttach ( ArchSpec & process_arch)
inlinevirtual

Called after attaching a process.

Parameters
[in]process_archIf you can figure out the process architecture after attach, fill it in here.

Allow Process plug-ins to execute some code after attaching to a process.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote, lldb_private::ProcessTrace, lldb_private::ProcessWindows, lldb_private::ScriptedProcess, and ProcessKDP.

Definition at line 1035 of file Process.h.

References lldb_private::ArchSpec::Clear().

Referenced by CompleteAttach(), lldb_private::ProcessTrace::DidAttach(), and ProcessKDP::DidAttach().

◆ DidDestroy()

virtual void lldb_private::Process::DidDestroy ( )
inlinevirtual

Definition at line 1227 of file Process.h.

Referenced by DestroyImpl().

◆ DidDetach()

virtual void lldb_private::Process::DidDetach ( )
inlinevirtual

Called after detaching from a process.

Allow Process plug-ins to execute some code after detaching from a process.

Definition at line 1198 of file Process.h.

Referenced by Detach().

◆ DidExec()

void Process::DidExec ( )
virtual

Called after a process re-execs itself.

Allow Process plug-ins to execute some code after a process has exec'ed itself. Subclasses typically should override DoDidExec() as the lldb_private::Process class needs to remove its dynamic loader, runtime, ABI and other plug-ins, as well as unload all shared libraries.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 5974 of file Process.cpp.

References lldb_private::Target::CleanupProcess(), lldb_private::Target::ClearModules(), CompleteAttach(), lldb_private::Target::DidExec(), DoDidExec(), Flush(), lldb_private::GetLog(), GetTarget(), LLDB_LOGF, m_abi_sp, m_allocated_memory_cache, m_dyld_up, m_dynamic_checkers_up, m_image_tokens, m_instrumentation_runtimes, m_jit_loaders_up, m_language_runtimes, m_language_runtimes_mutex, m_memory_cache, m_os_up, m_system_runtime_up, m_thread_list, lldb_private::Process, and Target.

Referenced by lldb_private::process_gdb_remote::ProcessGDBRemote::DidExec().

◆ DidExit()

virtual void lldb_private::Process::DidExit ( )
inlinevirtual

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 1423 of file Process.h.

Referenced by SetExitStatus().

◆ DidFork()

virtual void lldb_private::Process::DidFork ( lldb::pid_t child_pid,
lldb::tid_t child_tid )
inlinevirtual

Called after a reported fork.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 1050 of file Process.h.

◆ DidHalt()

virtual void lldb_private::Process::DidHalt ( )
inlinevirtual

Called after halting a process.

Allow Process plug-ins to execute some code after halting a process.

Definition at line 1172 of file Process.h.

Referenced by HaltPrivate().

◆ DidLaunch()

virtual void lldb_private::Process::DidLaunch ( )
inlinevirtual

Called after launching a process.

Allow Process plug-ins to execute some code after launching a process.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote, lldb_private::ProcessWindows, and lldb_private::ScriptedProcess.

Definition at line 1096 of file Process.h.

Referenced by LaunchPrivate().

◆ DidResume()

virtual void lldb_private::Process::DidResume ( )
inlinevirtual

Called after resuming a process.

Allow Process plug-ins to execute some code after resuming a process.

Reimplemented in lldb_private::ScriptedProcess.

Definition at line 1139 of file Process.h.

Referenced by PrivateResume().

◆ DidSignal()

virtual void lldb_private::Process::DidSignal ( )
inlinevirtual

Called after sending a signal to a process.

Allow Process plug-ins to execute some code after sending a signal to a process.

Definition at line 1235 of file Process.h.

Referenced by Signal().

◆ DidVFork()

virtual void lldb_private::Process::DidVFork ( lldb::pid_t child_pid,
lldb::tid_t child_tid )
inlinevirtual

Called after a reported vfork.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 1053 of file Process.h.

◆ DidVForkDone()

virtual void lldb_private::Process::DidVForkDone ( )
inlinevirtual

Called after reported vfork completion.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 1056 of file Process.h.

◆ DisableAllBreakpointSites()

void Process::DisableAllBreakpointSites ( )

Definition at line 1569 of file Process.cpp.

References DisableBreakpointSite(), and m_breakpoint_site_list.

Referenced by DestroyImpl(), and Detach().

◆ DisableBreakpointSite()

◆ DisableBreakpointSiteByID()

Status Process::DisableBreakpointSiteByID ( lldb::user_id_t break_id)

◆ DisableSoftwareBreakpoint()

◆ DisableWatchpoint()

Status Process::DisableWatchpoint ( lldb::WatchpointSP wp_sp,
bool notify = true )
virtual

◆ DoAllocateMemory()

virtual lldb::addr_t lldb_private::Process::DoAllocateMemory ( size_t size,
uint32_t permissions,
Status & error )
inlinevirtual

Actually allocate memory in the process.

This function will allocate memory in the process's address space. This can't rely on the generic function calling mechanism, since that requires this function.

Parameters
[in]sizeThe size of the allocation requested.
Returns
The address of the allocated buffer in the process, or LLDB_INVALID_ADDRESS if the allocation failed.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote, lldb_private::ProcessWindows, and ProcessKDP.

Definition at line 1802 of file Process.h.

References error(), lldb_private::Status::FromErrorStringWithFormatv(), lldb_private::PluginInterface::GetPluginName(), and LLDB_INVALID_ADDRESS.

◆ DoAttachToProcessWithID()

virtual Status lldb_private::Process::DoAttachToProcessWithID ( lldb::pid_t pid,
const ProcessAttachInfo & attach_info )
inlinevirtual

Attach to an existing process using a process ID.

Parameters
[in]pidThe process ID that we should attempt to attach to.
[in]attach_infoInformation on how to do the attach. For example, GetUserID() will return the uid to attach as.
Returns
Returns a successful Status attaching was successful, or an appropriate (possibly platform-specific) error code if attaching fails. hanming : need flag

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote, lldb_private::ProcessWindows, lldb_private::ScriptedProcess, and ProcessKDP.

Definition at line 1001 of file Process.h.

References lldb_private::Status::FromErrorStringWithFormatv(), and lldb_private::PluginInterface::GetPluginName().

Referenced by Attach().

◆ DoAttachToProcessWithName()

virtual Status lldb_private::Process::DoAttachToProcessWithName ( const char * process_name,
const ProcessAttachInfo & attach_info )
inlinevirtual

Attach to an existing process using a partial process name.

Parameters
[in]process_nameThe name of the process to attach to.
[in]attach_infoInformation on how to do the attach. For example, GetUserID() will return the uid to attach as.
Returns
Returns a successful Status attaching was successful, or an appropriate (possibly platform-specific) error code if attaching fails.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote, lldb_private::ScriptedProcess, and ProcessKDP.

Definition at line 1022 of file Process.h.

References lldb_private::Status::FromErrorString().

Referenced by Attach().

◆ DoConnectRemote()

virtual Status lldb_private::Process::DoConnectRemote ( llvm::StringRef remote_url)
inlinevirtual

Attach to a remote system via a URL.

Parameters
[in]remote_urlThe URL format that we are connecting to.
Returns
Returns an error object.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote, and ProcessKDP.

Definition at line 983 of file Process.h.

References lldb_private::Status::FromErrorString().

Referenced by ConnectRemote().

◆ DoDeallocateMemory()

virtual Status lldb_private::Process::DoDeallocateMemory ( lldb::addr_t ptr)
inlinevirtual

Actually deallocate memory in the process.

This function will deallocate memory in the process's address space that was allocated with AllocateMemory.

Parameters
[in]ptrA return value from AllocateMemory, pointing to the memory you want to deallocate.
Returns
true if the memory was deallocated, false otherwise.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote, lldb_private::ProcessWindows, and ProcessKDP.

Definition at line 2070 of file Process.h.

References lldb_private::Status::FromErrorStringWithFormatv(), and lldb_private::PluginInterface::GetPluginName().

◆ DoDestroy()

◆ DoDetach()

virtual Status lldb_private::Process::DoDetach ( bool keep_stopped)
inlinevirtual

Detaches from a running or stopped process.

Returns
Returns true if the process successfully detaches, false otherwise.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote, lldb_private::ProcessWindows, and ProcessKDP.

Definition at line 1188 of file Process.h.

References lldb_private::Status::FromErrorStringWithFormatv(), and lldb_private::PluginInterface::GetPluginName().

Referenced by Detach().

◆ DoDidExec()

virtual void lldb_private::Process::DoDidExec ( )
inlinevirtual

Subclasses of Process should implement this function if they need to do anything after a process exec's itself.

Definition at line 1047 of file Process.h.

Referenced by DidExec().

◆ DoFindInMemory()

void Process::DoFindInMemory ( lldb::addr_t start_addr,
lldb::addr_t end_addr,
const uint8_t * buf,
size_t size,
AddressRanges & matches,
size_t alignment,
size_t max_matches )
protectedvirtual

Definition at line 1974 of file Process.cpp.

References FindInMemory(), and LLDB_INVALID_ADDRESS.

Referenced by FindInMemory(), and FindRangesInMemory().

◆ DoGetMemoryRegionInfo()

virtual Status lldb_private::Process::DoGetMemoryRegionInfo ( lldb::addr_t load_addr,
MemoryRegionInfo & range_info )
inlineprotectedvirtual

DoGetMemoryRegionInfo is called by GetMemoryRegionInfo after it has removed non address bits from load_addr.

Override this method in subclasses of Process.

See GetMemoryRegionInfo for details of the logic.

Parameters
[in]load_addrThe load address to query the range_info for. (non address bits removed)
[out]range_infoAn range_info value containing the details of the range.
Returns
An error value.

Reimplemented in lldb_private::minidump::ProcessMinidump, lldb_private::process_gdb_remote::ProcessGDBRemote, lldb_private::ProcessWindows, lldb_private::ScriptedProcess, ProcessElfCore, and ProcessMachCore.

Definition at line 2899 of file Process.h.

References lldb_private::Status::FromErrorString().

Referenced by GetMemoryRegionInfo().

◆ DoGetWatchpointReportedAfter()

virtual std::optional< bool > lldb_private::Process::DoGetWatchpointReportedAfter ( )
inlineprotectedvirtual

Provide an override value in the subclass for lldb's CPU-based logic for whether watchpoint exceptions are received before or after an instruction executes.

If a Process subclass needs to override this architecture-based result, it may do so by overriding this method.

Returns
No boolean returned means there is no override of the default architecture-based behavior. true is returned for targets where watchpoints are reported after the instruction has completed. false is returned for targets where watchpoints are reported before the instruction executes.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 2919 of file Process.h.

Referenced by GetWatchpointReportedAfter().

◆ DoHalt()

virtual Status lldb_private::Process::DoHalt ( bool & caused_stop)
inlinevirtual

Halts a running process.

DoHalt must produce one and only one stop StateChanged event if it actually stops the process. If the stop happens through some natural event (for instance a SIGSTOP), then forwarding that event will do. Otherwise, you must generate the event manually. This function is called from the context of the private state thread.

Parameters
[out]caused_stopIf true, then this Halt caused the stop, otherwise, the process was already stopped.
Returns
Returns true if the process successfully halts, false otherwise.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote, lldb_private::ProcessWindows, and ProcessKDP.

Definition at line 1164 of file Process.h.

References lldb_private::Status::FromErrorStringWithFormatv(), and lldb_private::PluginInterface::GetPluginName().

Referenced by HaltPrivate().

◆ DoLaunch()

virtual Status lldb_private::Process::DoLaunch ( Module * exe_module,
ProcessLaunchInfo & launch_info )
inlinevirtual

Launch a new process.

Launch a new process by spawning a new process using exe_module's file as the file to launch. Launch details are provided in launch_info.

Parameters
[in]exe_moduleThe module from which to extract the file specification and launch.
[in]launch_infoDetails (e.g. arguments, stdio redirection, etc.) for the requested launch.
Returns
An Status instance indicating success or failure of the operation.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote, lldb_private::ProcessWindows, lldb_private::ScriptedProcess, and ProcessKDP.

Definition at line 1088 of file Process.h.

References lldb_private::Status::FromErrorStringWithFormatv(), and lldb_private::PluginInterface::GetPluginName().

Referenced by LaunchPrivate().

◆ DoLoadCore()

◆ DoReadMemory()

virtual size_t lldb_private::Process::DoReadMemory ( lldb::addr_t vm_addr,
void * buf,
size_t size,
Status & error )
protectedpure virtual

Actually do the reading of memory from a process.

Subclasses must override this function and can return fewer bytes than requested when memory requests are too large. This class will break up the memory requests and keep advancing the arguments along as needed.

Parameters
[in]vm_addrA virtual load address that indicates where to start reading memory from.
[in]sizeThe number of bytes to read.
[out]bufA byte buffer that is at least size bytes long that will receive the memory bytes.
[out]errorAn error that indicates the success or failure of this operation. If error indicates success (error.Success()), then the value returned can be trusted, otherwise zero will be returned.
Returns
The number of bytes that were actually read into buf. Zero is returned in the case of an error.

Implemented in lldb_private::minidump::ProcessMinidump, lldb_private::process_gdb_remote::ProcessGDBRemote, lldb_private::ProcessTrace, lldb_private::ProcessWindows, lldb_private::ScriptedProcess, ProcessElfCore, ProcessKDP, and ProcessMachCore.

References error().

Referenced by DisableSoftwareBreakpoint(), EnableSoftwareBreakpoint(), and ReadMemoryFromInferior().

◆ DoReadMemoryTags()

virtual llvm::Expected< std::vector< uint8_t > > lldb_private::Process::DoReadMemoryTags ( lldb::addr_t addr,
size_t len,
int32_t type )
inlineprotectedvirtual

Does the final operation to read memory tags.

E.g. sending a GDB packet. It assumes that ReadMemoryTags has checked that memory tagging is enabled and has expanded the memory range as needed.

Parameters
[in]addrStart of address range to read memory tags for.
[in]lenLength of the memory range to read tags for (in bytes).
[in]typeType of tags to read (get this from a MemoryTagManager)
Returns
The packed tag data received from the remote or an error if the read failed.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 3074 of file Process.h.

References lldb_private::PluginInterface::GetPluginName().

Referenced by ReadMemoryTags().

◆ DoResume()

virtual Status lldb_private::Process::DoResume ( lldb::RunDirection direction)
inlinevirtual

Resumes all of a process's threads as configured using the Thread run control functions.

Threads for a process should be updated with one of the run control actions (resume, step, or suspend) that they should take when the process is resumed. If no run control action is given to a thread it will be resumed by default.

Returns
Returns true if the process successfully resumes using the thread run control actions, false otherwise.
See also
Thread:Resume()
Thread:Step()
Thread:Suspend()

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote, lldb_private::ProcessWindows, lldb_private::ScriptedProcess, and ProcessKDP.

Definition at line 1128 of file Process.h.

References lldb::eRunForward, lldb_private::Status::FromErrorStringWithFormatv(), and lldb_private::PluginInterface::GetPluginName().

Referenced by PrivateResume().

◆ DoSignal()

virtual Status lldb_private::Process::DoSignal ( int signal)
inlinevirtual

Sends a process a UNIX signal signal.

Returns
Returns an error object.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote, and ProcessKDP.

Definition at line 1217 of file Process.h.

References lldb_private::Status::FromErrorStringWithFormatv(), and lldb_private::PluginInterface::GetPluginName().

Referenced by Signal().

◆ DoUpdateThreadList()

virtual bool lldb_private::Process::DoUpdateThreadList ( ThreadList & old_thread_list,
ThreadList & new_thread_list )
protectedpure virtual

Update the thread list following process plug-in's specific logic.

This method should only be invoked by UpdateThreadList.

Returns
true if the new thread list could be generated, false otherwise.

Implemented in lldb_private::minidump::ProcessMinidump, lldb_private::process_gdb_remote::ProcessGDBRemote, lldb_private::ProcessTrace, lldb_private::ProcessWindows, lldb_private::ScriptedProcess, ProcessElfCore, ProcessFreeBSDKernel, ProcessKDP, and ProcessMachCore.

References ThreadList.

Referenced by UpdateThreadList().

◆ DoWillAttachToProcessWithID()

virtual Status lldb_private::Process::DoWillAttachToProcessWithID ( lldb::pid_t pid)
inlinevirtual

Called before attaching to a process.

Allow Process plug-ins to execute some code before attaching a process.

Returns
Returns an error object.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote, and ProcessKDP.

Definition at line 954 of file Process.h.

References lldb_private::Status.

Referenced by WillAttachToProcessWithID().

◆ DoWillAttachToProcessWithName()

virtual Status lldb_private::Process::DoWillAttachToProcessWithName ( const char * process_name,
bool wait_for_launch )
inlinevirtual

Called before attaching to a process.

Allow Process plug-ins to execute some code before attaching a process.

Returns
Returns an error object.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote, and ProcessKDP.

Definition at line 971 of file Process.h.

References lldb_private::Status.

Referenced by WillAttachToProcessWithName().

◆ DoWillLaunch()

virtual Status lldb_private::Process::DoWillLaunch ( Module * module)
inlinevirtual

Called before launching to a process.

Allow Process plug-ins to execute some code before launching a process.

Returns
Returns an error object.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote, and ProcessKDP.

Definition at line 1069 of file Process.h.

References lldb_private::Status.

Referenced by WillLaunch().

◆ DoWriteMemory()

virtual size_t lldb_private::Process::DoWriteMemory ( lldb::addr_t vm_addr,
const void * buf,
size_t size,
Status & error )
inlinevirtual

Actually do the writing of memory to a process.

Parameters
[in]vm_addrA virtual load address that indicates where to start writing memory to.
[in]bufA byte buffer that is at least size bytes long that contains the data to write.
[in]sizeThe number of bytes to write.
[out]errorAn error value in case the memory write fails.
Returns
The number of bytes that were actually written.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote, lldb_private::ProcessWindows, lldb_private::ScriptedProcess, and ProcessKDP.

Definition at line 1719 of file Process.h.

References error(), lldb_private::Status::FromErrorStringWithFormatv(), and lldb_private::PluginInterface::GetPluginName().

Referenced by DisableSoftwareBreakpoint(), EnableSoftwareBreakpoint(), and WriteMemoryPrivate().

◆ DoWriteMemoryTags()

virtual Status lldb_private::Process::DoWriteMemoryTags ( lldb::addr_t addr,
size_t len,
int32_t type,
const std::vector< uint8_t > & tags )
inlineprotectedvirtual

Does the final operation to write memory tags.

E.g. sending a GDB packet. It assumes that WriteMemoryTags has checked that memory tagging is enabled and has packed the tag data.

Parameters
[in]addrStart of address range to write memory tags for.
[in]lenLength of the memory range to write tags for (in bytes).
[in]typeType of tags to read (get this from a MemoryTagManager)
[in]tagsPacked tags to be written.
Returns
Status telling you whether the write succeeded.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 3099 of file Process.h.

References lldb_private::Status::FromErrorStringWithFormatv(), and lldb_private::PluginInterface::GetPluginName().

Referenced by WriteMemoryTags().

◆ DumpPluginHistory()

virtual void lldb_private::Process::DumpPluginHistory ( Stream & s)
inlinevirtual

◆ DumpThreadPlans()

void Process::DumpThreadPlans ( Stream & strm,
lldb::DescriptionLevel desc_level,
bool internal,
bool condense_trivial,
bool skip_unreported_plans )

Dump all the thread plans for this process.

Parameters
[in,out]strmThe stream to which to dump the output
[in]desc_levelHow much detail to dump
[in]internalIf true dump all plans, if false only user initiated plans
[in]condense_trivialIf true, only dump a header if the plan stack is just the base plan.
[in]skip_unreported_plansIf true, skip printing all thread plan stacks that don't currently have a backing lldb_private::Thread *.

Definition at line 1240 of file Process.cpp.

References m_thread_plans.

◆ DumpThreadPlansForTID()

bool Process::DumpThreadPlansForTID ( Stream & strm,
lldb::tid_t tid,
lldb::DescriptionLevel desc_level,
bool internal,
bool condense_trivial,
bool skip_unreported_plans )

Dump the thread plans associated with thread with tid.

Parameters
[in,out]strmThe stream to which to dump the output
[in]tidThe tid whose Plan Stack we are dumping
[in]desc_levelHow much detail to dump
[in]internalIf true dump all plans, if false only user initiated plans
[in]condense_trivialIf true, only dump a header if the plan stack is just the base plan.
[in]skip_unreported_plansIf true, only dump a plan if it is currently backed by an lldb_private::Thread *.
Returns
Returns true if TID was found, false otherwise

Definition at line 1233 of file Process.cpp.

References m_thread_plans.

Referenced by CommandObjectThreadPlanList::DoExecute(), and CommandObjectThreadPlanList::HandleOneThread().

◆ EnableBreakpointSite()

◆ EnableBreakpointSiteByID()

Status Process::EnableBreakpointSiteByID ( lldb::user_id_t break_id)

◆ EnableSoftwareBreakpoint()

◆ EnableWatchpoint()

Status Process::EnableWatchpoint ( lldb::WatchpointSP wp_sp,
bool notify = true )
virtual

◆ Finalize()

◆ FindInMemory() [1/2]

◆ FindInMemory() [2/2]

lldb::addr_t Process::FindInMemory ( lldb::addr_t low,
lldb::addr_t high,
const uint8_t * buf,
size_t size )

Find a pattern within a memory region.

This function searches for a pattern represented by the provided buffer within the memory range specified by the low and high addresses. It uses a bad character heuristic to optimize the search process.

Parameters
[in]lowThe starting address of the memory region to be searched. (inclusive)
[in]highThe ending address of the memory region to be searched. (exclusive)
[in]bufA pointer to the buffer containing the pattern to be searched.
[in]buffer_sizeThe size of the buffer in bytes.
Returns
The address where the pattern was found or LLDB_INVALID_ADDRESS if not found.

Definition at line 3354 of file Process.cpp.

References error(), GetMemoryRegionInfo(), lldb_private::MemoryRegionInfo::GetRange(), lldb_private::Range< B, S >::GetRangeEnd(), LLDB_INVALID_ADDRESS, and ReadMemory().

Referenced by CommandObjectMemoryFind::DoExecute(), and DoFindInMemory().

◆ FindModuleUUID()

lldb_private::UUID Process::FindModuleUUID ( const llvm::StringRef path)
virtual

Reimplemented in ProcessElfCore.

Definition at line 6110 of file Process.cpp.

◆ FindPlugin()

ProcessSP Process::FindPlugin ( lldb::TargetSP target_sp,
llvm::StringRef plugin_name,
lldb::ListenerSP listener_sp,
const FileSpec * crash_file_path,
bool can_connect )
static

Find a Process plug-in that can debug module using the currently selected architecture.

Scans all loaded plug-in interfaces that implement versions of the Process plug-in interface and returns the first instance that can debug the file.

See also
Process::CanDebug ()

Definition at line 381 of file Process.cpp.

References lldb_private::PluginManager::GetProcessCreateCallbackAtIndex(), and lldb_private::PluginManager::GetProcessCreateCallbackForPluginName().

Referenced by lldb_private::Target::CreateProcess().

◆ FindRangesInMemory()

◆ FindThreadPlans()

ThreadPlanStack * Process::FindThreadPlans ( lldb::tid_t tid)

Find the thread plan stack associated with thread with tid.

Parameters
[in]tidThe tid whose Plan Stack we are seeking.
Returns
Returns a ThreadPlan if the TID is found or nullptr if not.

Definition at line 1221 of file Process.cpp.

References m_thread_plans.

◆ FixAnyAddress()

addr_t Process::FixAnyAddress ( lldb::addr_t pc)

Use this method when you do not know, or do not care what kind of address you are fixing.

On platforms where there would be a difference between the two types, it will pick the safest option.

Its purpose is to signal that no specific choice was made and provide an alternative to randomly picking FixCode/FixData address. Which could break platforms where there is a difference (only Arm Thumb at this time).

Definition at line 5968 of file Process.cpp.

References GetABI().

Referenced by ProcessMachCore::ReadMemory().

◆ FixCodeAddress()

addr_t Process::FixCodeAddress ( lldb::addr_t pc)

Some targets might use bits in a code address to indicate a mode switch, ARM uses bit zero to signify a code address is thumb, so any ARM ABI plug-ins would strip those bits.

Or use the high bits to authenticate a pointer value.

Definition at line 5956 of file Process.cpp.

References GetABI().

Referenced by DynamicLoaderMacOS::NotifyBreakpointHit(), lldb_private::StackID::SetPC(), and lldb_private::StackID::StackID().

◆ FixDataAddress()

◆ Flush()

void Process::Flush ( )

Flush all data in the process.

Flush the memory caches, all threads, and any other cached data in the process.

This function can be called after a world changing event like adding a new symbol file, or after the process makes a large context switch (from boot ROM to booted into an OS).

Definition at line 5890 of file Process.cpp.

References m_extended_thread_list, m_extended_thread_stop_id, m_queue_list, m_queue_list_stop_id, and m_thread_list.

Referenced by DidExec(), CommandObjectTargetModulesLoad::DoExecute(), CommandObjectTargetSymbolsAdd::DoExecute(), ObjectFileMachO::LoadCoreFileImages(), and LoadOperatingSystemPlugin().

◆ ForceNextEventDelivery()

void lldb_private::Process::ForceNextEventDelivery ( )
inlineprotected

Definition at line 3005 of file Process.h.

References m_force_next_event_delivery.

Referenced by RunThreadPlan().

◆ ForceScriptedState()

virtual void lldb_private::Process::ForceScriptedState ( lldb::StateType state)
inlinevirtual

Reimplemented in lldb_private::ScriptedProcess.

Definition at line 2715 of file Process.h.

◆ GetABI()

◆ GetAddressByteSize()

uint32_t Process::GetAddressByteSize ( ) const

Definition at line 3620 of file Process.cpp.

References lldb_private::ArchSpec::GetAddressByteSize(), lldb_private::Target::GetArchitecture(), and GetTarget().

Referenced by lldb_private::formatters::Foundation1437::__NSArrayMSize(), lldb_private::formatters::Foundation1437::__NSArrayMSize_Impl(), lldb_private::formatters::Foundation1437::__NSDictionaryMSize(), lldb_private::formatters::Foundation1437::__NSDictionaryMSize_Impl(), lldb_private::formatters::Foundation1437::__NSSetMSize(), lldb_private::formatters::Foundation1437::__NSSetMSize_Impl(), CallVoidArgVoidPtrReturn(), CommandObjectMemoryFind::DoExecute(), CommandObjectProcessMinidumpDump::DoExecute(), lldb_private::PlatformWindows::DoLoadImage(), lldb_private::ScriptedProcess::DoWriteMemory(), CommandObjectRegisterRead::DumpRegister(), ExtractRuntimeGlobalSymbol(), ProcessElfCore::FindBuidIdInCoreMemory(), lldb_private::CPPLanguageRuntime::FindLibCppStdFunctionCallableInfo(), ABIMacOSX_arm64::GetArgumentValues(), ABIMacOSX_arm::GetArgumentValues(), ABISysV_arm64::GetArgumentValues(), ABISysV_arm::GetArgumentValues(), lldb_private::minidump::ProcessMinidump::GetAuxvData(), lldb_private::process_gdb_remote::ProcessGDBRemote::GetAuxvData(), ProcessElfCore::GetAuxvData(), GetClassDataMask(), lldb_private::formatters::InferiorSizedWord::GetMaximum(), ABIMacOSX_arm64::GetReturnValueObjectImpl(), ABISysV_arm64::GetReturnValueObjectImpl(), lldb_private::ClassDescriptorV2::ivar_t::GetSize(), lldb_private::ClassDescriptorV2::method_t::GetSize(), lldb_private::ClangExpressionDeclMap::GetTargetInfo(), lldb_private::wasm::ProcessWasm::GetWasmCallStack(), lldb_private::InferiorCallMmap(), lldb_private::AppleObjCRuntimeV2::SharedCacheImageHeaders::IsImageLoaded(), LoadValueFromConsecutiveGPRRegisters(), LoadValueFromConsecutiveGPRRegisters(), lldb_private::ProcessStructReader::ProcessStructReader(), lldb_private::ClassDescriptorV2::class_ro_t::Read(), lldb_private::ClassDescriptorV2::class_rw_t::Read(), lldb_private::ClassDescriptorV2::ivar_list_t::Read(), lldb_private::ClassDescriptorV2::ivar_t::Read(), lldb_private::ClassDescriptorV2::method_list_t::Read(), lldb_private::ClassDescriptorV2::method_t::Read(), lldb_private::ClassDescriptorV2::objc_class_t::Read(), lldb_private::ClassDescriptorV2::relative_list_entry_t::Read(), lldb_private::ClassDescriptorV2::relative_list_list_t::Read(), lldb_private::RegisterContextUnwind::ReadFrameAddress(), ReadPointerFromMemory(), lldb_private::wasm::RegisterContextWasm::ReadRegister(), ReadScalarIntegerFromMemory(), ReadVBaseOffsetFromVTable(), lldb_private::RegisterContextUnwind::SavedLocationForRegister(), DynamicLoaderDarwinKernel::SearchForKernelWithDebugHints(), NSIndexPathSyntheticFrontEnd::Impl::InlinedIndexes::SetIndexes(), lldb_private::ValueObjectRegister::UpdateValue(), lldb_private::FunctionCaller::WriteFunctionArguments(), and WritePointerToMemory().

◆ GetAsyncProfileData()

size_t Process::GetAsyncProfileData ( char * buf,
size_t buf_size,
Status & error )
virtual

Get any available profile data.

Parameters
[out]bufA buffer that will receive any profile data bytes that are currently available.
[out]buf_sizeThe size in bytes for the buffer buf.
Returns
The number of bytes written into buf. If this value is equal to buf_size, another call to this function should be made to retrieve more profile data.

Definition at line 4563 of file Process.cpp.

References error(), lldb_private::GetLog(), LLDB_LOGF, m_profile_data, m_profile_data_comm_mutex, and lldb_private::Process.

◆ GetAuxvData()

DataExtractor Process::GetAuxvData ( )
virtual

◆ GetBaseDirection()

lldb::RunDirection lldb_private::Process::GetBaseDirection ( ) const
inline

Get the base run direction for the process.

The base direction is the direction the process will execute in (forward or backward) if no thread plan overrides the direction.

Definition at line 2755 of file Process.h.

References m_base_direction.

◆ GetBreakpointSiteList() [1/2]

◆ GetBreakpointSiteList() [2/2]

const StopPointSiteList< BreakpointSite > & Process::GetBreakpointSiteList ( ) const

Definition at line 1565 of file Process.cpp.

References m_breakpoint_site_list.

◆ GetBroadcasterClass()

llvm::StringRef lldb_private::Process::GetBroadcasterClass ( ) const
inlineoverridevirtual

This needs to be filled in if you are going to register the broadcaster with the broadcaster manager and do broadcaster class matching.

FIXME: Probably should make a ManagedBroadcaster subclass with all the bits needed to work with the BroadcasterManager, so that it is clearer how to add one.

Reimplemented from lldb_private::Broadcaster.

Definition at line 409 of file Process.h.

References GetStaticBroadcasterClass().

◆ GetByteOrder()

lldb::ByteOrder Process::GetByteOrder ( ) const

Definition at line 3616 of file Process.cpp.

References lldb_private::Target::GetArchitecture(), lldb_private::ArchSpec::GetByteOrder(), and GetTarget().

Referenced by lldb_private::IRExecutionUnit::DisassembleFunction(), CommandObjectMemoryFind::DoExecute(), lldb_private::ScriptedProcess::DoReadMemory(), lldb_private::ScriptedProcess::DoWriteMemory(), lldb_private::DWARFExpression::Evaluate(), ProcessElfCore::FindBuidIdInCoreMemory(), lldb_private::minidump::ProcessMinidump::GetAuxvData(), lldb_private::process_gdb_remote::ProcessGDBRemote::GetAuxvData(), ProcessElfCore::GetAuxvData(), lldb_private::RegisterContext::GetByteOrder(), ABIMacOSX_arm64::GetReturnValueObjectImpl(), ABISysV_arm64::GetReturnValueObjectImpl(), lldb_private::ClangExpressionDeclMap::GetTargetInfo(), lldb_private::AppleObjCRuntimeV2::SharedCacheImageHeaders::IsImageLoaded(), LoadValueFromConsecutiveGPRRegisters(), LoadValueFromConsecutiveGPRRegisters(), lldb_private::AppleObjCRuntimeV2::ParseClassInfoArray(), lldb_private::ProcessStructReader::ProcessStructReader(), lldb_private::ClassDescriptorV2::class_ro_t::Read(), lldb_private::ClassDescriptorV2::class_rw_t::Read(), lldb_private::ClassDescriptorV2::ivar_list_t::Read(), lldb_private::ClassDescriptorV2::ivar_t::Read(), lldb_private::ClassDescriptorV2::method_list_t::Read(), lldb_private::ClassDescriptorV2::method_t::Read(), lldb_private::ClassDescriptorV2::objc_class_t::Read(), lldb_private::ClassDescriptorV2::relative_list_entry_t::Read(), lldb_private::ClassDescriptorV2::relative_list_list_t::Read(), lldb_private::RegisterContextUnwind::ReadFrameAddress(), ReadJITEntry(), lldb_private::wasm::RegisterContextWasm::ReadRegister(), ReadScalarIntegerFromMemory(), lldb_private::RegisterContextUnwind::SavedLocationForRegister(), DynamicLoaderDarwinKernel::SearchForKernelWithDebugHints(), lldb_private::process_gdb_remote::ProcessGDBRemote::SetThreadPc(), and WriteScalarToMemory().

◆ GetCodeAddressMask()

lldb::addr_t Process::GetCodeAddressMask ( )

Get the current address mask in the Process.

This mask can used to set/clear non-address bits in an addr_t.

Returns
The current address mask. Bits which are set to 1 are not used for addressing. An address mask of 0 means all bits are used for addressing. An address mask of LLDB_INVALID_ADDRESS_MASK (all 1's) means that no mask has been set.

Definition at line 5898 of file Process.cpp.

References lldb_private::AddressableBits::AddressableBitToMask(), lldb_private::ProcessProperties::GetVirtualAddressableBits(), and m_code_address_mask.

Referenced by CommandObjectProcessStatus::DoExecute(), and GetHighmemCodeAddressMask().

◆ GetCoreFile()

virtual FileSpec lldb_private::Process::GetCoreFile ( ) const
inlinevirtual

Provide a way to retrieve the core dump file that is loaded for debugging.

Only available if IsLiveDebugSession() returns false.

Returns
File path to the core file.

Reimplemented in lldb_private::PostMortemProcess.

Definition at line 1526 of file Process.h.

◆ GetDataAddressMask()

◆ GetDynamicCheckers()

DynamicCheckerFunctions * lldb_private::Process::GetDynamicCheckers ( )
inline

◆ GetDynamicLoader()

DynamicLoader * Process::GetDynamicLoader ( )
virtual

◆ GetDynamicLoaderProcessState()

virtual lldb_private::StructuredData::ObjectSP lldb_private::Process::GetDynamicLoaderProcessState ( )
inlinevirtual

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 1384 of file Process.h.

◆ GetEventsPrivate()

bool Process::GetEventsPrivate ( lldb::EventSP & event_sp,
const Timeout< std::micro > & timeout,
bool control_only )
protected

◆ GetExitDescription()

const char * Process::GetExitDescription ( )

Get a textual description of what the process exited.

Returns
The textual description of why the process exited, or nullptr if there is no description available.

Definition at line 1016 of file Process.cpp.

References lldb::eStateExited, m_exit_status_mutex, m_exit_string, and m_public_state.

Referenced by GetStatus().

◆ GetExitStatus()

int Process::GetExitStatus ( )

Get the exit status for a process.

Returns
The process's return code, or -1 if the current process state is not eStateExited.

Definition at line 1008 of file Process.cpp.

References lldb::eStateExited, m_exit_status, m_exit_status_mutex, and m_public_state.

Referenced by GetStatus().

◆ GetExtendedCrashInfoDict()

StructuredData::DictionarySP lldb_private::Process::GetExtendedCrashInfoDict ( )
inline

Fetch extended crash information held by the process.

This will never be an empty shared pointer, it will always have a dict, though it may be empty.

Definition at line 2616 of file Process.h.

References m_crash_info_dict_sp.

Referenced by lldb_private::PlatformDarwin::FetchExtendedCrashInformation(), and lldb_private::AbortWithPayloadFrameRecognizer::RecognizeFrame().

◆ GetExtendedThreadList()

ThreadList & lldb_private::Process::GetExtendedThreadList ( )
inline

Definition at line 2264 of file Process.h.

References m_extended_thread_list, and ThreadList.

Referenced by lldb::SBThread::GetExtendedBacktraceThread().

◆ GetFileLoadAddress()

virtual Status lldb_private::Process::GetFileLoadAddress ( const FileSpec & file,
bool & is_loaded,
lldb::addr_t & load_addr )
inlinevirtual

Try to find the load address of a file.

The load address is defined as the address of the first memory region what contains data mapped from the specified file.

Parameters
[in]fileThe name of the file whose load address we are looking for
[out]is_loadedTrue if the file is loaded into the memory and false otherwise.
[out]load_addrThe load address of the file if it is loaded into the processes address space, LLDB_INVALID_ADDRESS otherwise.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 2601 of file Process.h.

References lldb_private::Status::FromErrorString().

◆ GetGlobalProperties()

ProcessProperties & Process::GetGlobalProperties ( )
static

◆ GetHighmemCodeAddressMask()

lldb::addr_t Process::GetHighmemCodeAddressMask ( )

The highmem masks are for targets where we may have different masks for low memory versus high memory addresses, and they will be left as LLDB_INVALID_ADDRESS_MASK normally, meaning the base masks should be applied to all addresses.

Definition at line 5912 of file Process.cpp.

References lldb_private::AddressableBits::AddressableBitToMask(), GetCodeAddressMask(), lldb_private::ProcessProperties::GetHighmemVirtualAddressableBits(), LLDB_INVALID_ADDRESS_MASK, and m_highmem_code_address_mask.

◆ GetHighmemDataAddressMask()

◆ GetHistoryThreads()

ThreadCollectionSP Process::GetHistoryThreads ( lldb::addr_t addr)

Definition at line 6114 of file Process.cpp.

References lldb_private::MemoryHistory::FindPlugin().

◆ GetHostMacCatalystVersion()

virtual llvm::VersionTuple lldb_private::Process::GetHostMacCatalystVersion ( )
inlinevirtual
Returns
the macCatalyst version of the host OS.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 1263 of file Process.h.

◆ GetHostOSVersion()

virtual llvm::VersionTuple lldb_private::Process::GetHostOSVersion ( )
inlinevirtual

Sometimes the connection to a process can detect the host OS version that the process is running on.

The current platform should be checked first in case the platform is connected, but clients can fall back onto this function if the platform fails to identify the host OS version. The platform should be checked first in case you are running a simulator platform that might itself be running natively, but have different heuristics for figuring out which OS is emulating.

Returns
Returns the version tuple of the host OS. In case of failure an empty VersionTuple is returner.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 1260 of file Process.h.

Referenced by lldb_private::Platform::GetOSVersion(), and lldb_private::DynamicLoaderDarwin::UseDYLDSPI().

◆ GetID()

lldb::pid_t lldb_private::Process::GetID ( ) const
inline

Returns the pid of the process or LLDB_INVALID_PROCESS_ID if there is no known pid.

Definition at line 556 of file Process.h.

References m_pid.

Referenced by lldb_private::process_gdb_remote::ProcessGDBRemote::AsyncThread(), ProcessKDP::AsyncThread(), Attach(), lldb_private::process_gdb_remote::ProcessGDBRemote::BuildDynamicRegisterInfo(), BuildKernelSection(), BuildProcessSection(), CanJIT(), CompleteAttach(), ConnectRemote(), ProcessKDP::DidAttach(), lldb_private::process_gdb_remote::ProcessGDBRemote::DoConnectRemote(), lldb_private::process_gdb_remote::ProcessGDBRemote::DoDestroy(), lldb_private::ProcessWindows::DoDetach(), CommandObjectProcessConnect::DoExecute(), CommandObjectProcessContinue::DoExecute(), CommandObjectThreadContinue::DoExecute(), CommandObjectThreadUntil::DoExecute(), lldb_private::process_gdb_remote::ProcessGDBRemote::DoLaunch(), lldb_private::minidump::ProcessMinidump::DoLoadCore(), lldb_private::process_gdb_remote::ProcessGDBRemote::DoResume(), lldb_private::process_gdb_remote::ProcessGDBRemote::DoUpdateThreadList(), ProcessKDP::DoUpdateThreadList(), DynamicLoaderPOSIXDYLD::EntryBreakpointHit(), lldb_private::FormatEntity::Format(), lldb_private::PlatformDarwin::GetOSVersion(), lldb_private::minidump::ProcessMinidump::GetProcessInfo(), GetProcessInfo(), lldb_private::ProcessTrace::GetProcessInfo(), lldb_private::ScriptedProcess::GetProcessInfo(), ProcessElfCore::GetProcessInfo(), GetStatus(), HandlePrivateEvent(), lldb_private::process_gdb_remote::ProcessGDBRemote::HandleStopReply(), LaunchPrivate(), lldb_private::ProcessWindows::OnExitProcess(), PrintWarningOptimization(), PrintWarningUnsupportedLanguage(), DynamicLoaderPOSIXDYLD::RendezvousBreakpointHit(), RunPrivateStateThread(), lldb_private::process_gdb_remote::ProcessGDBRemote::SetThreadStopInfo(), StartPrivateStateThread(), and lldb_private::process_gdb_remote::ThreadGDBRemote::ThreadGDBRemote().

◆ GetImageInfoAddress()

addr_t Process::GetImageInfoAddress ( )
virtual

Get the image information address for the current process.

Some runtimes have system functions that can help dynamic loaders locate the dynamic loader information needed to observe shared libraries being loaded or unloaded. This function is in the Process interface (as opposed to the DynamicLoader interface) to ensure that remote debugging can take advantage of this functionality.

Returns
The address of the dynamic loader information, or LLDB_INVALID_ADDRESS if this is not supported by this interface.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote, lldb_private::ProcessWindows, ProcessElfCore, ProcessKDP, and ProcessMachCore.

Definition at line 1479 of file Process.cpp.

References LLDB_INVALID_ADDRESS.

Referenced by DynamicLoaderFreeBSDKernel::FindFreeBSDKernel(), DynamicLoaderMacOS::NotifyBreakpointHit(), ResolveRendezvousAddress(), and DynamicLoaderDarwinKernel::SearchForDarwinKernel().

◆ GetImagePtrFromToken()

lldb::addr_t Process::GetImagePtrFromToken ( size_t token) const

Definition at line 6151 of file Process.cpp.

References LLDB_INVALID_IMAGE_TOKEN, and m_image_tokens.

Referenced by lldb_private::PlatformWindows::UnloadImage().

◆ GetImageTokens()

const std::vector< lldb::addr_t > & lldb_private::Process::GetImageTokens ( )
inline

Get the image vector for the current process.

Returns
The constant reference to the member m_image_tokens.

Definition at line 788 of file Process.h.

References m_image_tokens.

Referenced by CommandObjectProcessUnload::HandleArgumentCompletion().

◆ GetImplementation()

virtual void * lldb_private::Process::GetImplementation ( )
inlinevirtual

Reimplemented in lldb_private::ScriptedProcess.

Definition at line 2713 of file Process.h.

◆ GetInstrumentationRuntime()

InstrumentationRuntimeSP Process::GetInstrumentationRuntime ( lldb::InstrumentationRuntimeType type)

Definition at line 6131 of file Process.cpp.

References m_instrumentation_runtimes.

◆ GetIOHandlerID()

uint32_t lldb_private::Process::GetIOHandlerID ( ) const
inline

◆ GetJITLoaders()

JITLoaderList & Process::GetJITLoaders ( )
protectedvirtual

◆ GetLanguageRuntime()

◆ GetLanguageRuntimes()

std::vector< LanguageRuntime * > Process::GetLanguageRuntimes ( )

◆ GetLastNaturalStopID()

uint32_t lldb_private::Process::GetLastNaturalStopID ( ) const
inline

Definition at line 1483 of file Process.h.

References m_mod_id.

Referenced by UpdateQueueListIfNeeded(), and UpdateThreadListIfNeeded().

◆ GetLastUserExpressionResumeID()

uint32_t lldb_private::Process::GetLastUserExpressionResumeID ( ) const
inline

Definition at line 1479 of file Process.h.

References m_mod_id.

◆ GetLoadAddressPermissions()

bool Process::GetLoadAddressPermissions ( lldb::addr_t load_addr,
uint32_t & permissions )
virtual

Attempt to get the attributes for a region of memory in the process.

It may be possible for the remote debug server to inspect attributes for a region of memory in the process, such as whether there is a valid page of memory at a given address or whether that page is readable/writable/executable by the process.

Parameters
[in]load_addrThe address of interest in the process.
[out]permissionsIf this call returns successfully, this bitmask will have its Permissions bits set to indicate whether the region is readable/writable/executable. If this call fails, the bitmask values are undefined.
Returns
Returns true if it was able to determine the attributes of the memory region. False if not.

Definition at line 2550 of file Process.cpp.

References lldb_private::MemoryRegionInfo::eDontKnow, error(), lldb_private::MemoryRegionInfo::GetExecutable(), lldb_private::MemoryRegionInfo::GetLLDBPermissions(), GetMemoryRegionInfo(), lldb_private::MemoryRegionInfo::GetReadable(), and lldb_private::MemoryRegionInfo::GetWritable().

Referenced by lldb_private::RegisterContextUnwind::GetFullUnwindPlanForFrame(), lldb_private::RegisterContextUnwind::InitializeNonZerothFrame(), and lldb_private::RegisterContextUnwind::ReadFrameAddress().

◆ GetLoadedDynamicLibrariesInfos() [1/3]

virtual lldb_private::StructuredData::ObjectSP lldb_private::Process::GetLoadedDynamicLibrariesInfos ( )
inlinevirtual

◆ GetLoadedDynamicLibrariesInfos() [2/3]

virtual lldb_private::StructuredData::ObjectSP lldb_private::Process::GetLoadedDynamicLibrariesInfos ( const std::vector< lldb::addr_t > & load_addresses)
inlinevirtual

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 1364 of file Process.h.

◆ GetLoadedDynamicLibrariesInfos() [3/3]

virtual lldb_private::StructuredData::ObjectSP lldb_private::Process::GetLoadedDynamicLibrariesInfos ( lldb::addr_t image_list_address,
lldb::addr_t image_count )
inlinevirtual

Retrieve the list of shared libraries that are loaded for this process This method is used on pre-macOS 10.12, pre-iOS 10, pre-tvOS 10, pre- watchOS 3 systems.

The following two methods are for newer versions of those OSes.

For certain platforms, the time it takes for the DynamicLoader plugin to read all of the shared libraries out of memory over a slow communication channel may be too long. In that instance, the gdb-remote stub may be able to retrieve the necessary information about the solibs out of memory and return a concise summary sufficient for the DynamicLoader plugin.

Parameters
[in]image_list_addressThe address where the table of shared libraries is stored in memory, if that is appropriate for this platform. Else this may be passed as LLDB_INVALID_ADDRESS.
[in]image_countThe number of shared libraries that are present in this process, if that is appropriate for this platofrm Else this may be passed as LLDB_INVALID_ADDRESS.
Returns
A StructuredDataSP object which, if non-empty, will contain the information the DynamicLoader needs to get the initial scan of solibs resolved.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 1350 of file Process.h.

◆ GetLoadedModuleList()

virtual llvm::Expected< LoadedModuleInfoList > lldb_private::Process::GetLoadedModuleList ( )
inlinevirtual

Query remote GDBServer for a detailed loaded library list.

Returns
The list of modules currently loaded by the process, or an error.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 714 of file Process.h.

◆ GetLoadImageUtilityFunction()

UtilityFunction * Process::GetLoadImageUtilityFunction ( Platform * platform,
llvm::function_ref< std::unique_ptr< UtilityFunction >()> factory )

Get the cached UtilityFunction that assists in loading binary images into the process.

Parameters
[in]platformThe platform fetching the UtilityFunction.
[in]factoryA function that will be called only once per-process in a thread-safe way to create the UtilityFunction if it has not been initialized yet.
Returns
The cached utility function or null if the platform is not the same as the target's platform.

Definition at line 6376 of file Process.cpp.

References GetTarget(), m_dlopen_utility_func_flag_once, and m_dlopen_utility_func_up.

Referenced by lldb_private::PlatformWindows::DoLoadImage().

◆ GetMemoryRegionInfo()

Status Process::GetMemoryRegionInfo ( lldb::addr_t load_addr,
MemoryRegionInfo & range_info )

Locate the memory region that contains load_addr.

If load_addr is within the address space the process has mapped range_info will be filled in with the start and end of that range as well as the permissions for that range and range_info. GetMapped will return true.

If load_addr is outside any mapped region then range_info will have its start address set to load_addr and the end of the range will indicate the start of the next mapped range or be set to LLDB_INVALID_ADDRESS if there are no valid mapped ranges between load_addr and the end of the process address space.

GetMemoryRegionInfo calls DoGetMemoryRegionInfo. Override that function in process subclasses.

Parameters
[in]load_addrThe load address to query the range_info for. May include non address bits, these will be removed by the ABI plugin if there is one.
[out]range_infoAn range_info value containing the details of the range.
Returns
An error value.

Definition at line 6214 of file Process.cpp.

References lldb_private::Range< B, S >::Contains(), DoGetMemoryRegionInfo(), error(), lldb_private::Status::FromErrorString(), GetABI(), and lldb_private::MemoryRegionInfo::GetRange().

Referenced by AddLinkMapSections(), AddThreadLocalMemoryRegions(), lldb_private::process_gdb_remote::ProcessGDBRemote::DoWriteMemory(), FindInMemory(), lldb_private::process_gdb_remote::ProcessGDBRemote::FlashErase(), GetLoadAddressPermissions(), GetMemoryRegions(), and SaveOffRegionsWithStackPointers().

◆ GetMemoryRegions()

Status Process::GetMemoryRegions ( lldb_private::MemoryRegionInfos & region_list)
virtual

◆ GetMemoryTagManager()

llvm::Expected< const MemoryTagManager * > Process::GetMemoryTagManager ( )

If this architecture and process supports memory tagging, return a tag manager that can be used to maniupulate those memory tags.

Returns
Either a valid pointer to a tag manager or an error describing why one could not be provided.

Definition at line 6451 of file Process.cpp.

References lldb_private::Target::GetArchitecturePlugin(), lldb_private::Architecture::GetMemoryTagManager(), GetTarget(), and SupportsMemoryTagging().

Referenced by CommandObjectMemoryTagRead::DoExecute(), CommandObjectMemoryTagWrite::DoExecute(), ReadMemoryTags(), ProcessElfCore::ReadMemoryTags(), and WriteMemoryTags().

◆ GetMetadata()

virtual StructuredData::DictionarySP lldb_private::Process::GetMetadata ( )
inlinevirtual

Fetch process defined metadata.

Returns
A StructuredDataSP object which, if non-empty, will contain the information related to the process.

Reimplemented in lldb_private::ScriptedProcess.

Definition at line 2611 of file Process.h.

Referenced by lldb_private::PlatformDarwin::ExtractAppSpecificInfo().

◆ GetModID()

ProcessModID lldb_private::Process::GetModID ( ) const
inline

Get the Modification ID of the process.

Returns
The modification ID of the process.

Definition at line 1471 of file Process.h.

References m_mod_id.

Referenced by CommandObjectProcessStatus::DoExecute(), PrivateResume(), and lldb_private::ValueObject::EvaluationPoint::SyncWithProcessState().

◆ GetModIDRef()

const ProcessModID & lldb_private::Process::GetModIDRef ( ) const
inline

Definition at line 1473 of file Process.h.

References m_mod_id.

Referenced by lldb_private::StopInfoBreakpoint::PerformAction().

◆ GetModuleSpec()

bool Process::GetModuleSpec ( const FileSpec & module_file_spec,
const ArchSpec & arch,
ModuleSpec & module_spec )
virtual

Try to fetch the module specification for a module with the given file name and architecture.

Process sub-classes have to override this method if they support platforms where the Platform object can't get the module spec for all module.

Parameters
[in]module_file_specThe file name of the module to get specification for.
[in]archThe architecture of the module to get specification for.
[out]module_specThe fetched module specification if the return value is true, unchanged otherwise.
Returns
Returns true if the module spec fetched successfully, false otherwise.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 6140 of file Process.cpp.

References lldb_private::ModuleSpec::Clear().

Referenced by lldb_private::Platform::GetRemoteSharedModule().

◆ GetNextEvent()

◆ GetNextThreadIndexID()

uint32_t Process::GetNextThreadIndexID ( uint64_t thread_id)

Definition at line 1267 of file Process.cpp.

References AssignIndexIDToThread().

◆ GetOperatingSystem()

OperatingSystem * lldb_private::Process::GetOperatingSystem ( )
inline

Definition at line 2398 of file Process.h.

References m_os_up.

Referenced by CreateOSPluginThread(), and UpdateThreadListIfNeeded().

◆ GetPluginCommandObject()

virtual CommandObject * lldb_private::Process::GetPluginCommandObject ( )
inlinevirtual

Return a multi-word command object that can be used to expose plug-in specific commands.

This object will be used to resolve plug-in commands and can be triggered by a call to:

(lldb) process command <args>
Returns
A CommandObject which can be one of the concrete subclasses of CommandObject like CommandObjectRaw, CommandObjectParsed, or CommandObjectMultiword.

Reimplemented in lldb_private::minidump::ProcessMinidump, lldb_private::process_gdb_remote::ProcessGDBRemote, and ProcessKDP.

Definition at line 605 of file Process.h.

Referenced by CommandObjectProcessPlugin::GetProxyCommandObject().

◆ GetPrivateState()

◆ GetProcessInfo()

◆ GetQueueList()

QueueList & lldb_private::Process::GetQueueList ( )
inline

Definition at line 2284 of file Process.h.

References m_queue_list, and UpdateQueueListIfNeeded().

◆ GetResumeID()

uint32_t lldb_private::Process::GetResumeID ( ) const
inline

Definition at line 1477 of file Process.h.

References m_mod_id.

◆ GetRunLock()

ProcessRunLock & Process::GetRunLock ( )

◆ GetSharedCacheInfo()

virtual lldb_private::StructuredData::ObjectSP lldb_private::Process::GetSharedCacheInfo ( )
inlinevirtual

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 1375 of file Process.h.

◆ GetShouldDetach()

bool lldb_private::Process::GetShouldDetach ( ) const
inline

◆ GetSoftwareBreakpointTrapOpcode()

◆ GetSourceFileCache()

SourceManager::SourceFileCache & lldb_private::Process::GetSourceFileCache ( )
inline

Definition at line 2717 of file Process.h.

References m_source_file_cache.

◆ GetState()

◆ GetStateChangedEvents()

◆ GetStateChangedEventsPrivate()

◆ GetStaticBroadcasterClass()

llvm::StringRef Process::GetStaticBroadcasterClass ( )
static

◆ GetStatus()

◆ GetSTDERR()

size_t Process::GetSTDERR ( char * buf,
size_t buf_size,
Status & error )
virtual

Get any available STDERR.

Calling this method is a valid operation only if all of the following conditions are true: 1) The process was launched, and not attached to. 2) The process was not launched with eLaunchFlagDisableSTDIO. 3) The process was launched without supplying a valid file path for STDERR.

Note that the implementation will probably need to start a read thread in the background to make sure that the pipe is drained and the STDERR buffered appropriately, to prevent the process from deadlocking trying to write to a full buffer.

Events will be queued indicating that there is STDERR available that can be retrieved using this function.

Parameters
[in]bufA buffer that will receive any STDERR bytes that are currently available.
[out]buf_sizeThe size in bytes for the buffer buf.
Returns
The number of bytes written into buf. If this value is equal to buf_size, another call to this function should be made to retrieve more STDERR data.

Reimplemented in lldb_private::ProcessWindows.

Definition at line 4607 of file Process.cpp.

References error(), lldb_private::GetLog(), LLDB_LOGF, m_stderr_data, m_stdio_communication_mutex, and lldb_private::Process.

Referenced by lldb_private::Debugger::FlushProcessOutput().

◆ GetSTDOUT()

size_t Process::GetSTDOUT ( char * buf,
size_t buf_size,
Status & error )
virtual

Get any available STDOUT.

Calling this method is a valid operation only if all of the following conditions are true: 1) The process was launched, and not attached to. 2) The process was not launched with eLaunchFlagDisableSTDIO. 3) The process was launched without supplying a valid file path for STDOUT.

Note that the implementation will probably need to start a read thread in the background to make sure that the pipe is drained and the STDOUT buffered appropriately, to prevent the process from deadlocking trying to write to a full buffer.

Events will be queued indicating that there is STDOUT available that can be retrieved using this function.

Parameters
[out]bufA buffer that will receive any STDOUT bytes that are currently available.
[in]buf_sizeThe size in bytes for the buffer buf.
Returns
The number of bytes written into buf. If this value is equal to buf_size, another call to this function should be made to retrieve more STDOUT data.

Reimplemented in lldb_private::ProcessWindows.

Definition at line 4588 of file Process.cpp.

References error(), lldb_private::GetLog(), LLDB_LOGF, m_stdio_communication_mutex, m_stdout_data, and lldb_private::Process.

Referenced by lldb_private::Debugger::FlushProcessOutput().

◆ GetStopEventForStopID()

lldb::EventSP lldb_private::Process::GetStopEventForStopID ( uint32_t stop_id) const
inline

Definition at line 1487 of file Process.h.

References m_mod_id.

◆ GetStopID()

◆ GetStructuredDataPlugin()

StructuredDataPluginSP Process::GetStructuredDataPlugin ( llvm::StringRef type_name) const

Returns the StructuredDataPlugin associated with a given type name, if there is one.

There will only be a plugin for a given StructuredDataType if the debugged process monitor claims that the feature is supported. This is one way to tell whether a feature is available.

Returns
The plugin if one is available for the specified feature; otherwise, returns an empty shared pointer.

Definition at line 4555 of file Process.cpp.

References m_structured_data_plugin_map.

◆ GetSystemArchitecture()

virtual ArchSpec lldb_private::Process::GetSystemArchitecture ( )
inlinevirtual

◆ GetSystemRuntime()

SystemRuntime * Process::GetSystemRuntime ( )
virtual

◆ GetTarget() [1/2]

Target & lldb_private::Process::GetTarget ( )
inline

Get the target object pointer for this module.

Returns
A Target object pointer to the target that owns this module.

Definition at line 1270 of file Process.h.

References m_target_wp, and Target.

Referenced by lldb_private::StructuredDataDarwinLog::AddInitCompletionHook(), AddLinkMapSections(), AdvanceAddressToNextBranchInstruction(), lldb_private::AppleObjCDeclVendor::AppleObjCDeclVendor(), lldb_private::AppleObjCRuntime::AppleObjCRuntime(), lldb_private::AppleObjCTypeEncodingParser::AppleObjCTypeEncodingParser(), Attach(), lldb_private::process_gdb_remote::GDBRemoteCommunicationClient::AvoidGPackets(), lldb_private::process_gdb_remote::ProcessGDBRemote::BuildDynamicRegisterInfo(), lldb_private::minidump::ProcessMinidump::BuildMemoryRegions(), BuildModulesSection(), BuildProcessSection(), BuildThreadsSection(), CalculateExecutionContext(), CallVoidArgVoidPtrReturn(), DynamicLoaderDarwinKernel::CheckForKernelImageAtAddress(), DynamicLoaderFreeBSDKernel::CheckForKernelImageAtAddress(), CompleteAttach(), lldb_private::process_gdb_remote::ProcessGDBRemote::ConnectToDebugserver(), lldb_private::CPPLanguageRuntime::CPPLanguageRuntime(), CreateBreakpointSite(), DynamicLoaderDarwinKernel::CreateInstance(), DynamicLoaderFreeBSDKernel::CreateInstance(), DynamicLoaderHexagonDYLD::CreateInstance(), DynamicLoaderMacOS::CreateInstance(), DynamicLoaderPOSIXDYLD::CreateInstance(), JITLoaderGDB::CreateInstance(), lldb_private::DynamicLoaderWindowsDYLD::CreateInstance(), lldb_private::GNUstepObjCRuntime::CreateInstance(), lldb_private::StructuredDataDarwinLog::CreateInstance(), lldb_private::wasm::DynamicLoaderWasmDYLD::CreateInstance(), lldb_private::trace_intel_pt::TraceIntelPT::CreateInstanceForLiveProcess(), ThreadFreeBSDKernel::CreateRegisterContextForFrame(), DidExec(), lldb_private::process_gdb_remote::ProcessGDBRemote::DidLaunchOrAttach(), lldb_private::process_gdb_remote::ProcessGDBRemote::DoConnectRemote(), ProcessKDP::DoConnectRemote(), lldb_private::process_gdb_remote::ProcessGDBRemote::DoDestroy(), CommandObjectMemoryWrite::DoExecute(), CommandObjectProcessLoad::DoExecute(), CommandObjectProcessStatus::DoExecute(), CommandObjectProcessUnload::DoExecute(), ProcessMachCore::DoGetMemoryRegionInfo(), lldb_private::process_gdb_remote::ProcessGDBRemote::DoLaunch(), lldb_private::minidump::ProcessMinidump::DoLoadCore(), lldb_private::ScriptedProcess::DoLoadCore(), ProcessElfCore::DoLoadCore(), ProcessMachCore::DoLoadCore(), lldb_private::PlatformWindows::DoLoadImage(), lldb_private::ProcessTrace::DoReadMemory(), ProcessFreeBSDKernel::DoUpdateThreadList(), DynamicLoaderDarwinKernel::DynamicLoaderDarwinKernel(), lldb_private::process_gdb_remote::ProcessGDBRemote::EnableWatchpoint(), DynamicLoaderPOSIXDYLD::EntryBreakpointHit(), lldb_private::process_gdb_remote::ProcessGDBRemote::EstablishConnectionIfNeeded(), EvaluateExpression(), lldb_private::ExecutionContext::ExecutionContext(), lldb_private::PlatformDarwin::ExtractCrashInfoAnnotations(), ExtractRuntimeGlobalSymbol(), FindInMemory(), DynamicLoaderFreeBSDKernel::FindKernelAtLoadAddress(), lldb_private::CPPLanguageRuntime::FindLibCppStdFunctionCallableInfo(), FindRangesInMemory(), ProcessFreeBSDKernel::FindSymbol(), lldb_private::FormatEntity::Format(), GetABI(), GetAddressByteSize(), lldb_private::ProcessTrace::GetArchitecture(), lldb_private::ScriptedProcess::GetArchitecture(), ProcessElfCore::GetArchitecture(), GetByteOrder(), lldb_private::RegisterContextUnwind::GetFullUnwindPlanForFrame(), lldb_private::process_gdb_remote::ProcessGDBRemote::GetGDBServerRegisterInfoXMLAndProcess(), lldb_private::ProcessWindows::GetImageInfoAddress(), ProcessElfCore::GetImageInfoAddress(), lldb_private::AppleObjCRuntimeV1::GetISAHashTablePointer(), lldb_private::AppleObjCRuntimeV2::GetISAHashTablePointer(), lldb_private::platform_android::PlatformAndroid::GetLibdlFunctionDeclarations(), lldb_private::ScriptedProcess::GetLoadedDynamicLibrariesInfos(), GetLoadImageUtilityFunction(), GetMemoryTagManager(), lldb_private::AppleObjCRuntime::GetObjCModule(), lldb_private::AppleObjCRuntime::GetObjCVersion(), lldb_private::minidump::ProcessMinidump::GetOrCreateModule(), lldb_private::minidump::ProcessMinidump::GetPluginCommandObject(), lldb_private::process_gdb_remote::ProcessGDBRemote::GetPluginCommandObject(), ProcessKDP::GetPluginCommandObject(), lldb_private::minidump::ProcessMinidump::GetProcessInfo(), GetProcessInfo(), lldb_private::ProcessTrace::GetProcessInfo(), lldb_private::ScriptedProcess::GetProcessInfo(), ProcessElfCore::GetProcessInfo(), GetSoftwareBreakpointTrapOpcode(), lldb_private::Value::GetValueAsData(), lldb_private::AppleObjCRuntimeV2::GetValuesForGlobalCFBooleans(), lldb::SBFrame::GetVariables(), lldb_private::ItaniumABILanguageRuntime::GetVTableInfo(), GetWatchpointReportedAfter(), lldb_private::GNUstepObjCRuntime::GNUstepObjCRuntime(), lldb_private::StructuredDataDarwinLog::HandleArrivalOfStructuredData(), HandlePrivateEvent(), lldb_private::InferiorCallMmap(), lldb_private::InferiorCallMunmap(), lldb_private::RegisterContextUnwind::InitializeNonZerothFrame(), lldb_private::RegisterContextUnwind::InitializeZerothFrame(), lldb_private::RegisterContextUnwind::IsTrapHandlerSymbol(), lldb_private::process_gdb_remote::ProcessGDBRemote::LaunchAndConnectToDebugserver(), LaunchPrivate(), ProcessMachCore::LoadBinariesViaExhaustiveSearch(), lldb_private::DynamicLoader::LoadBinaryWithUUIDAndAddress(), LoadCore(), ObjectFileMachO::LoadCoreFileImages(), DynamicLoaderDarwinKernel::KextImageInfo::LoadImageAtFileAddress(), DynamicLoaderFreeBSDKernel::KModImageInfo::LoadImageUsingFileAddress(), DynamicLoaderDarwinKernel::KextImageInfo::LoadImageUsingMemoryModule(), DynamicLoaderFreeBSDKernel::KModImageInfo::LoadImageUsingMemoryModule(), lldb_private::process_gdb_remote::ProcessGDBRemote::LoadModules(), lldb_private::process_gdb_remote::ProcessGDBRemote::LoadStubBinaries(), PlatformPOSIX::MakeLoadImageUtilityFunction(), lldb_private::process_gdb_remote::ProcessGDBRemote::MaybeLoadExecutableModule(), DynamicLoaderMacOS::NotifyBreakpointHit(), DynamicLoaderMacOSXDYLD::NotifyBreakpointHit(), lldb_private::ProcessWindows::OnDebuggerConnected(), lldb_private::process_gdb_remote::ProcessGDBRemote::ParsePythonTargetDefinition(), lldb_private::StopInfoBreakpoint::PerformAction(), PopProcessIOHandler(), PrintWarningOptimization(), PrintWarningUnsupportedLanguage(), ProcessIOHandlerIsActive(), lldb_private::RegisterContextUnwind::PropagateTrapHandlerFlagFromUnwindPlan(), PushProcessIOHandler(), ReadJITEntry(), DynamicLoaderDarwinKernel::KextImageInfo::ReadMemoryModule(), DynamicLoaderFreeBSDKernel::KModImageInfo::ReadMemoryModule(), lldb_private::minidump::ProcessMinidump::ReadModuleList(), lldb_private::AbortWithPayloadFrameRecognizer::RecognizeFrame(), lldb_private::process_gdb_remote::GDBRemoteRegisterContext::ReconfigureRegisterInfo(), lldb_private::ProcessWindows::RefreshStateAfterStop(), lldb_private::AppleObjCTrampolineHandler::AppleObjCVTables::RefreshTrampolines(), lldb_private::RegisterAbortWithPayloadFrameRecognizer(), lldb_private::RegisterAssertFrameRecognizer(), lldb_private::RegisterVerboseTrapFrameRecognizer(), lldb_private::process_gdb_remote::GDBRemoteRegisterContext::RegisterWriteCausesReconfigure(), ResolveIndirectFunction(), ResumeNewPlan(), lldb_private::process_gdb_remote::ProcessGDBRemote::SaveCore(), DynamicLoaderDarwinKernel::SearchForKernelAtSameLoadAddr(), DynamicLoaderDarwinKernel::SearchForKernelNearPC(), DynamicLoaderDarwinKernel::SearchForKernelViaExhaustiveSearch(), lldb_private::process_gdb_remote::GDBRemoteCommunicationClient::ServeSymbolLookups(), SetPrivateState(), SetPublicState(), lldb_private::process_gdb_remote::ProcessGDBRemote::SetThreadStopInfo(), lldb_private::process_gdb_remote::ProcessGDBRemote::StartNoticingNewThreads(), lldb_private::AppleObjCRuntimeV2::UpdateISAToDescriptorMapIfNeeded(), UpdateThreadListIfNeeded(), lldb_private::DynamicLoaderDarwin::UseDYLDSPI(), and lldb_private::FunctionCaller::WriteFunctionWrapper().

◆ GetTarget() [2/2]

const Target & lldb_private::Process::GetTarget ( ) const
inline

Get the const target object pointer for this module.

Returns
A const Target object pointer to the target that owns this module.

Definition at line 1277 of file Process.h.

References m_target_wp, and Target.

◆ GetThreadList()

ThreadList & lldb_private::Process::GetThreadList ( )
inline

Definition at line 2253 of file Process.h.

References m_thread_list, and ThreadList.

Referenced by lldb_private::CommandObjectIterateOverThreads::BucketThread(), DynamicLoaderPOSIXDYLD::CalculateDynamicSaveCoreRanges(), CallVoidArgVoidPtrReturn(), lldb_private::process_gdb_remote::ProcessGDBRemote::DoConnectRemote(), ProcessKDP::DoConnectRemote(), CommandObjectProcessContinue::DoExecute(), CommandObjectTargetModulesShowUnwind::DoExecute(), CommandObjectThreadContinue::DoExecute(), CommandObjectThreadPlanPrune::DoExecute(), CommandObjectThreadSelect::DoExecute(), CommandObjectThreadStepWithTypeAndScope::DoExecute(), CommandObjectThreadUntil::DoExecute(), lldb_private::CommandObjectIterateOverThreads::DoExecute(), lldb_private::CommandObjectMultipleThreads::DoExecute(), lldb_private::ctf::CommandObjectThreadTraceExportCTF::DoExecute(), lldb_private::PlatformWindows::DoLoadImage(), lldb_private::trace_intel_pt::TraceIntelPT::DoRefreshLiveProcessState(), lldb_private::process_gdb_remote::ProcessGDBRemote::DoResume(), PlatformPOSIX::EvaluateLibdlExpression(), lldb_private::CommandObject::GetDefaultThread(), lldb_private::AppleObjCRuntime::GetObjectDescription(), GetSingleThreadFromArgs(), lldb_private::Thread::GetStatus(), GetThreadStatus(), lldb_private::InferiorCallMmap(), lldb_private::InferiorCallMunmap(), lldb_private::trace_intel_pt::TraceIntelPTBundleLoader::ParseThread(), PruneThreadPlans(), ResumeNewPlan(), RunThreadPlan(), SaveOffRegionsWithStackPointers(), DynamicLoaderDarwinKernel::SearchForKernelNearPC(), lldb_private::Thread::StepIn(), lldb_private::Thread::StepOut(), lldb_private::Thread::StepOver(), lldb_private::CommandCompletions::ThreadIDs(), and lldb_private::CommandCompletions::ThreadIndexes().

◆ GetThreadStatus()

size_t Process::GetThreadStatus ( Stream & ostrm,
bool only_threads_with_stop_reason,
uint32_t start_frame,
uint32_t num_frames,
uint32_t num_frames_with_source,
bool stop_format )

◆ GetUniqueID()

uint32_t lldb_private::Process::GetUniqueID ( ) const
inline

◆ GetUnixSignals()

◆ GetWatchpointReportedAfter()

bool Process::GetWatchpointReportedAfter ( )

Whether lldb will be notified about watchpoints after the instruction has completed executing, or if the instruction is rolled back and it is notified before it executes.

The default behavior is "exceptions received after instruction has executed", except for certain CPU architectures. Process subclasses may override this if they have additional information.

Returns
Returns true for targets where lldb is notified after the instruction has completed executing.

Definition at line 2504 of file Process.cpp.

References DoGetWatchpointReportedAfter(), lldb_private::Target::GetArchitecture(), GetTarget(), lldb_private::ArchSpec::GetTriple(), and lldb_private::ArchSpec::IsValid().

◆ GetWatchpointResourceList()

StopPointSiteList< lldb_private::WatchpointResource > & lldb_private::Process::GetWatchpointResourceList ( )
inline

Definition at line 2256 of file Process.h.

References m_watchpoint_resource_list.

◆ GetWatchpointSlotCount()

virtual std::optional< uint32_t > lldb_private::Process::GetWatchpointSlotCount ( )
inlinevirtual

Get the number of watchpoints supported by this target.

We may be able to determine the number of watchpoints available on this target; retrieve this value if possible.

This number may be less than the number of watchpoints a user can specify. This is because a single user watchpoint may require multiple watchpoint slots to implement. Due to the size and/or alignment of objects.

Returns
Returns the number of watchpoints, if available.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote, and lldb_private::ProcessWindows.

Definition at line 1979 of file Process.h.

◆ Halt()

Status Process::Halt ( bool clear_thread_plans = false,
bool use_run_lock = true )

Halts a running process.

This function is not meant to be overridden by Process subclasses. If the process is successfully halted, a eStateStopped process event with GetInterrupted will be broadcast. If false, we will halt the process with no events generated by the halt.

Parameters
[in]clear_thread_plansIf true, when the process stops, clear all thread plans.
[in]use_run_lockWhether to release the run lock after the stop.
Returns
Returns an error object. If the error is empty, the process is halted. otherwise the halt has failed.

Definition at line 3308 of file Process.cpp.

References lldb_private::Broadcaster::BroadcastEvent(), Destroy(), DoNoSelectMostRelevantFrame, lldb::eStateAttaching, lldb::eStateInvalid, lldb_private::Status::FromErrorString(), lldb_private::Status::FromErrorStringWithFormat(), lldb_private::ProcessProperties::GetInterruptTimeout(), GetState(), HijackProcessEvents(), m_clear_thread_plans_on_stop, m_public_state, lldb_private::Listener::MakeListener(), RestoreProcessEvents(), SelectMostRelevantFrame, SendAsyncInterrupt(), SetExitStatus(), SIGKILL, lldb_private::StateAsCString(), lldb_private::StateIsRunningState(), lldb_private::Status, and WaitForProcessToStop().

Referenced by CommandObjectProcessInterrupt::DoExecute(), lldb_private::CommandInterpreter::IOHandlerInterrupt(), and RunThreadPlan().

◆ HaltPrivate()

Status Process::HaltPrivate ( )
protected

Definition at line 4021 of file Process.cpp.

References DidHalt(), DoHalt(), error(), and WillHalt().

Referenced by RunPrivateStateThread().

◆ HandlePrivateEvent()

◆ HandleProcessStateChangedEvent()

bool Process::HandleProcessStateChangedEvent ( const lldb::EventSP & event_sp,
Stream * stream,
SelectMostRelevant select_most_relevant,
bool & pop_process_io_handler )
static

Centralize the code that handles and prints descriptions for process state changes.

Parameters
[in]event_spThe process state changed event
[in]streamThe output stream to get the state change description
[in,out]pop_process_io_handlerIf this value comes in set to true, then pop the Process IOHandler if needed. Else this variable will be set to true or false to indicate if the process needs to have its process IOHandler popped.
Returns
true if the event describes a process state changed event, false otherwise.

Definition at line 733 of file Process.cpp.

References Debugger, lldb::eDescriptionLevelBrief, lldb::eStateAttaching, lldb::eStateConnected, lldb::eStateCrashed, lldb::eStateDetached, lldb::eStateExited, lldb::eStateInvalid, lldb::eStateLaunching, lldb::eStateRunning, lldb::eStateStepping, lldb::eStateStopped, lldb::eStateSuspended, lldb::eStateUnloaded, lldb::eStopReasonPlanComplete, lldb_private::StopInfo::GetCrashingDereference(), lldb_private::TargetList::GetIndexOfTarget(), lldb_private::ThreadList::GetMutex(), lldb_private::Process::ProcessEventData::GetNumRestartedReasons(), lldb_private::Process::ProcessEventData::GetProcessFromEvent(), lldb_private::Process::ProcessEventData::GetRestartedFromEvent(), lldb_private::Process::ProcessEventData::GetRestartedReasonAtIndex(), lldb_private::TargetList::GetSelectedTarget(), lldb_private::ThreadList::GetSelectedThread(), lldb_private::Process::ProcessEventData::GetStateFromEvent(), lldb_private::Debugger::GetTargetList(), lldb_private::ThreadList::GetThreadAtIndex(), lldb_private::Stream::Printf(), lldb_private::Stream::PutCString(), lldb_private::ThreadList::SetSelectedThreadByID(), lldb_private::StateAsCString(), ThreadList, lldb_private::ThreadCollection::Threads(), and UINT32_MAX.

Referenced by lldb_private::Platform::DoConnectProcess(), lldb_private::Debugger::HandleProcessEvent(), and WaitForProcessToStop().

◆ HandleThreadAsyncInterrupt()

virtual lldb::ThreadSP lldb_private::Process::HandleThreadAsyncInterrupt ( uint8_t signo,
const std::string & description )
inlineprotectedvirtual

Handle thread specific async interrupt and return the original thread that requested the async interrupt.

It can be null if original thread has exited.

Parameters
[in]descriptionReturns the stop reason description of the async interrupt.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 2930 of file Process.h.

◆ HasAssignedIndexIDToThread()

bool Process::HasAssignedIndexIDToThread ( uint64_t sb_thread_id)

◆ HijackProcessEvents()

bool Process::HijackProcessEvents ( lldb::ListenerSP listener_sp)

If you need to ensure that you and only you will hear about some public event, then make a new listener, set to listen to process events, and then call this with that listener.

Then you will have to wait on that listener explicitly for events (rather than using the GetNextEvent & WaitFor* calls above. Be sure to call RestoreProcessEvents when you are done.

Parameters
[in]listener_spThis is the new listener to whom all process events will be delivered.
Returns
Returns true if the new listener could be installed, false otherwise.

Definition at line 919 of file Process.cpp.

References eBroadcastBitInterrupt, eBroadcastBitStateChanged, and lldb_private::Broadcaster::HijackBroadcaster().

Referenced by lldb_private::ProcessTrace::DidAttach(), Halt(), LaunchPrivate(), LoadCore(), ResumeSynchronous(), and StopForDestroyOrDetach().

◆ IsAlive()

◆ IsLiveDebugSession()

virtual bool lldb_private::Process::IsLiveDebugSession ( ) const
inlinevirtual

Check if a process is a live debug session, or a corefile/post-mortem.

Reimplemented in lldb_private::PostMortemProcess.

Definition at line 1519 of file Process.h.

Referenced by lldb_private::Trace::FindPluginForLiveProcess(), ReadModuleFromMemory(), TraceSupported(), and lldb_private::DynamicLoaderDarwin::UseDYLDSPI().

◆ IsPossibleDynamicValue()

◆ IsRunning()

bool Process::IsRunning ( ) const

Definition at line 1004 of file Process.cpp.

References m_public_state, and lldb_private::StateIsRunningState().

◆ IsValid()

bool lldb_private::Process::IsValid ( ) const
inline

Return whether this object is valid (i.e.

has not been finalized.)

Returns
Returns true if this Process has not been finalized and false otherwise.

Definition at line 591 of file Process.h.

References m_finalizing.

Referenced by lldb_private::ScriptedThread::Create(), lldb_private::process_gdb_remote::ProcessGDBRemote::DoConnectRemote(), and ProcessMachCore::LoadBinariesViaExhaustiveSearch().

◆ Launch()

Status Process::Launch ( ProcessLaunchInfo & launch_info)
virtual

Launch a new process.

Launch a new process by spawning a new process using the target object's executable module's file as the file to launch.

This function is not meant to be overridden by Process subclasses. It will first call Process::WillLaunch (Module *) and if that returns true, Process::DoLaunch (Module*, char const *[],char const *[],const char *,const char *, const char *) will be called to actually do the launching. If DoLaunch returns true, then Process::DidLaunch() will be called.

Parameters
[in]launch_infoDetails regarding the environment, STDIN/STDOUT/STDERR redirection, working path, etc. related to the requested launch.
Returns
An error object. Call GetID() to get the process ID if the error object is success.

Definition at line 2609 of file Process.cpp.

References lldb::eStateCrashed, lldb::eStateInvalid, lldb::eStateStopped, lldb_private::Status::Fail(), lldb_private::ProcessLaunchInfo::GetFlags(), HandlePrivateEvent(), LaunchPrivate(), PrivateStateThreadIsValid(), ResumePrivateStateThread(), SetPublicState(), StartPrivateStateThread(), lldb_private::Status, and lldb_private::Flags::Test().

◆ LaunchPrivate()

Status Process::LaunchPrivate ( ProcessLaunchInfo & launch_info,
lldb::StateType & state,
lldb::EventSP & event_sp )
private

Definition at line 2641 of file Process.cpp.

References lldb_private::Target::ClearAllLoadedSections(), Destroy(), lldb_private::DynamicLoader::DidLaunch(), lldb_private::JITLoaderList::DidLaunch(), DidLaunch(), lldb_private::SystemRuntime::DidLaunch(), DoLaunch(), DynamicLoader, error(), lldb::eStateCrashed, lldb::eStateExited, lldb::eStateInvalid, lldb::eStateLaunching, lldb::eStateStopped, lldb_private::Status::FromErrorString(), lldb_private::Status::FromErrorStringWithFormat(), GetDynamicLoader(), lldb_private::ProcessInfo::GetExecutableFile(), lldb_private::Target::GetExecutableModulePointer(), lldb_private::Module::GetFileSpec(), GetID(), GetJITLoaders(), lldb_private::FileSpec::GetPath(), GetSystemRuntime(), GetTarget(), HandlePrivateEvent(), HijackProcessEvents(), lldb_private::Target::Install(), lldb_private::FileSystem::Instance(), lldb_private::ProcessInfo::IsScriptedProcess(), LLDB_INVALID_PROCESS_ID, LoadOperatingSystemPlugin(), m_abi_sp, m_dyld_up, m_jit_loaders_up, m_os_up, m_process_input_reader, m_process_input_reader_mutex, m_public_run_lock, m_should_detach, m_system_runtime_up, m_unix_signals_sp, lldb_private::Listener::MakeListener(), PausePrivateStateThread(), PrivateStateThreadIsValid(), RestoreProcessEvents(), SetExitStatus(), SetID(), SetPublicState(), lldb_private::StateAsCString(), lldb_private::Status, UpdateAutomaticSignalFiltering(), lldb_private::Target::UpdateSignalsFromDummy(), WaitForProcessStopPrivate(), and WillLaunch().

Referenced by Launch().

◆ LoadCore()

◆ LoadModules()

virtual llvm::Error lldb_private::Process::LoadModules ( )
inlinevirtual

Sometimes processes know how to retrieve and load shared libraries.

This is normally done by DynamicLoader plug-ins, but sometimes the connection to the process allows retrieving this information. The dynamic loader plug-ins can use this function if they can't determine the current shared library load state.

Returns
A status object indicating if the operation was sucessful or not.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 706 of file Process.h.

◆ LoadOperatingSystemPlugin()

void Process::LoadOperatingSystemPlugin ( bool flush)
protected

◆ MapSupportedStructuredDataPlugins()

void Process::MapSupportedStructuredDataPlugins ( const StructuredData::Array & supported_type_names)
protected

Loads any plugins associated with asynchronous structured data and maps the relevant supported type name to the plugin.

Processes can receive asynchronous structured data from the process monitor. This method will load and map any structured data plugins that support the given set of supported type names. Later, if any of these features are enabled, the process monitor is free to generate asynchronous structured data. The data must come in as a single StructuredData::Dictionary. That dictionary must have a string field named 'type', with a value that equals the relevant type name string (one of the values in supported_type_names).

Parameters
[in]supported_type_namesAn array of zero or more type names. Each must be unique. For each entry in the list, a StructuredDataPlugin will be searched for that supports the structured data type name.

Definition at line 6271 of file Process.cpp.

References lldb_private::StructuredData::Array::ForEach(), lldb_private::GetLog(), lldb_private::StructuredData::Array::GetSize(), lldb_private::PluginManager::GetStructuredDataPluginCreateCallbackAtIndex(), LLDB_LOG, m_structured_data_plugin_map, and lldb_private::Process.

Referenced by lldb_private::process_gdb_remote::ProcessGDBRemote::DidLaunchOrAttach().

◆ ModulesDidLoad()

◆ operator=()

const Process & lldb_private::Process::operator= ( const Process & )
privatedelete

References Process().

◆ PausePrivateStateThread()

void Process::PausePrivateStateThread ( )
protected

Definition at line 3829 of file Process.cpp.

References ControlPrivateStateThread(), and eBroadcastInternalStateControlPause.

Referenced by LaunchPrivate().

◆ PeekAtStateChangedEvents()

◆ PopProcessIOHandler()

◆ PrefetchModuleSpecs()

virtual void lldb_private::Process::PrefetchModuleSpecs ( llvm::ArrayRef< FileSpec > module_file_specs,
const llvm::Triple & triple )
inlinevirtual

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 2584 of file Process.h.

◆ PrintWarningOptimization()

void Process::PrintWarningOptimization ( const SymbolContext & sc)

Print a user-visible warning about a module being built with optimization.

Prints a async warning message to the user one time per Module where a function is found that was compiled with optimization, per Process.

Parameters
[in]scA SymbolContext with eSymbolContextFunction and eSymbolContextModule pre-computed.

Definition at line 6074 of file Process.cpp.

References lldb_private::SymbolContext::function, GetID(), lldb_private::Function::GetIsOptimized(), GetTarget(), lldb_private::ProcessProperties::GetWarningsOptimization(), and lldb_private::SymbolContext::module_sp.

◆ PrintWarningUnsupportedLanguage()

◆ PrivateResume()

Status Process::PrivateResume ( )
protected

◆ PrivateStateThreadIsValid()

bool lldb_private::Process::PrivateStateThreadIsValid ( ) const
inlineprotected

◆ ProcessIOHandlerExists()

bool lldb_private::Process::ProcessIOHandlerExists ( ) const
inlineprotected

Definition at line 3335 of file Process.h.

References m_process_input_reader, and m_process_input_reader_mutex.

Referenced by SyncIOHandler().

◆ ProcessIOHandlerIsActive()

bool Process::ProcessIOHandlerIsActive ( )
protected

◆ PruneThreadPlans()

void Process::PruneThreadPlans ( )

Prune ThreadPlanStacks for all unreported threads.

Definition at line 1229 of file Process.cpp.

References GetThreadList(), and m_thread_plans.

Referenced by CommandObjectThreadPlanPrune::DoExecute().

◆ PruneThreadPlansForTID()

bool Process::PruneThreadPlansForTID ( lldb::tid_t tid)

Prune ThreadPlanStacks for unreported threads.

Parameters
[in]tidThe tid whose Plan Stack we are seeking to prune.
Returns
true if the TID is found or false if not.

Definition at line 1225 of file Process.cpp.

References m_thread_plans.

Referenced by CommandObjectThreadPlanPrune::DoExecute().

◆ PushProcessIOHandler()

◆ PutSTDIN()

virtual size_t lldb_private::Process::PutSTDIN ( const char * buf,
size_t buf_size,
Status & error )
inlinevirtual

Puts data into this process's STDIN.

Calling this method is a valid operation only if all of the following conditions are true: 1) The process was launched, and not attached to. 2) The process was not launched with eLaunchFlagDisableSTDIO. 3) The process was launched without supplying a valid file path for STDIN.

Parameters
[in]bufA buffer that contains the data to write to the process's STDIN.
[in]buf_sizeThe size in bytes for the buffer buf.
Returns
The number of bytes written into buf. If this value is less than buf_size, another call to this function should be made to write the rest of the data.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote, and lldb_private::ProcessWindows.

Definition at line 2165 of file Process.h.

References error(), and lldb_private::Status::FromErrorString().

◆ Queues()

QueueList::QueueIterable lldb_private::Process::Queues ( )
inline

Definition at line 2289 of file Process.h.

References m_queue_list, and UpdateQueueListIfNeeded().

◆ ReadCStringFromMemory() [1/2]

size_t Process::ReadCStringFromMemory ( lldb::addr_t vm_addr,
char * cstr,
size_t cstr_max_len,
Status & error )

Read a NULL terminated C string from memory.

This function will read a cache page at a time until the NULL C string terminator is found. It will stop reading if the NULL termination byte isn't found before reading cstr_max_len bytes, and the results are always guaranteed to be NULL terminated (at most cstr_max_len - 1 bytes will be read).

Definition at line 2119 of file Process.cpp.

References lldb_private::Status::Clear(), error(), lldb_private::Status::FromErrorString(), m_memory_cache, and ReadMemory().

Referenced by lldb_private::PlatformWindows::DoLoadImage(), ProcessFreeBSDKernel::DoUpdateThreadList(), lldb_private::PlatformDarwin::ExtractCrashInfoAnnotations(), lldb_private::AppleObjCRuntime::GetObjectDescription(), lldb_private::ClassDescriptorV2::class_ro_t::Read(), lldb_private::ClassDescriptorV2::ivar_t::Read(), lldb_private::ClassDescriptorV2::method_t::Read(), ReadCStringFromMemory(), and lldb_private::AbortWithPayloadFrameRecognizer::RecognizeFrame().

◆ ReadCStringFromMemory() [2/2]

size_t Process::ReadCStringFromMemory ( lldb::addr_t vm_addr,
std::string & out_str,
Status & error )

Definition at line 2097 of file Process.cpp.

References error(), and ReadCStringFromMemory().

◆ ReadMemory()

size_t Process::ReadMemory ( lldb::addr_t vm_addr,
void * buf,
size_t size,
Status & error )
virtual

Read of memory from a process.

This function will read memory from the current process's address space and remove any traps that may have been inserted into the memory.

This function is not meant to be overridden by Process subclasses, the subclasses should implement Process::DoReadMemory (lldb::addr_t, size_t, void *).

Parameters
[in]vm_addrA virtual load address that indicates where to start reading memory from.
[out]bufA byte buffer that is at least size bytes long that will receive the memory bytes.
[in]sizeThe number of bytes to read.
[out]errorAn error that indicates the success or failure of this operation. If error indicates success (error.Success()), then the value returned can be trusted, otherwise zero will be returned.
Returns
The number of bytes that were actually read into buf. If the returned number is greater than zero, yet less than size, then this function will get called again with vm_addr, buf, and size updated appropriately. Zero is returned in the case of an error.

Reimplemented in lldb_private::minidump::ProcessMinidump, lldb_private::ProcessTrace, lldb_private::wasm::ProcessWasm, ProcessElfCore, and ProcessMachCore.

Definition at line 1930 of file Process.cpp.

References error(), GetABI(), lldb_private::ProcessProperties::GetDisableMemoryCache(), m_memory_cache, ReadMemoryFromInferior(), and lldb_private::Status::Success().

Referenced by lldb_private::formatters::Foundation1437::__NSArrayMSize_Impl(), lldb_private::formatters::Foundation1437::__NSDictionaryMSize_Impl(), lldb_private::formatters::Foundation1437::__NSSetMSize_Impl(), lldb_private::IRExecutionUnit::DisassembleFunction(), CommandObjectMemoryFind::DoExecute(), lldb_private::DWARFExpression::Evaluate(), FindInMemory(), lldb_private::Value::GetValueAsData(), lldb_private::AppleObjCRuntimeV2::SharedCacheImageHeaders::IsImageLoaded(), LoadValueFromConsecutiveGPRRegisters(), LoadValueFromConsecutiveGPRRegisters(), lldb_private::AppleObjCRuntimeV2::ParseClassInfoArray(), lldb_private::ClassDescriptorV2::class_ro_t::Read(), lldb_private::ClassDescriptorV2::class_rw_t::Read(), lldb_private::ClassDescriptorV2::ivar_list_t::Read(), lldb_private::ClassDescriptorV2::ivar_t::Read(), lldb_private::ClassDescriptorV2::method_list_t::Read(), lldb_private::ClassDescriptorV2::method_t::Read(), lldb_private::ClassDescriptorV2::objc_class_t::Read(), lldb_private::ClassDescriptorV2::relative_list_entry_t::Read(), lldb_private::ClassDescriptorV2::relative_list_list_t::Read(), ReadCStringFromMemory(), DynamicLoaderFreeBSDKernel::ReadELFHeader(), lldb_private::Type::ReadFromMemory(), ReadJITEntry(), DynamicLoaderDarwinKernel::ReadMachHeader(), lldb_private::wasm::ProcessWasm::ReadMemory(), DynamicLoaderFreeBSDKernel::KModImageInfo::ReadMemoryModule(), ReadProcessMemory(), ReadScalarIntegerFromMemory(), and lldb_private::AppleObjCRuntimeV1::UpdateISAToDescriptorMapIfNeeded().

◆ ReadMemoryFromInferior()

size_t Process::ReadMemoryFromInferior ( lldb::addr_t vm_addr,
void * buf,
size_t size,
Status & error )

Read of memory from a process.

This function has the same semantics of ReadMemory except that it bypasses caching.

Parameters
[in]vm_addrA virtual load address that indicates where to start reading memory from.
[out]bufA byte buffer that is at least size bytes long that will receive the memory bytes.
[in]sizeThe number of bytes to read.
[out]errorAn error that indicates the success or failure of this operation. If error indicates success (error.Success()), then the value returned can be trusted, otherwise zero will be returned.
Returns
The number of bytes that were actually read into buf. If the returned number is greater than zero, yet less than size, then this function will get called again with vm_addr, buf, and size updated appropriately. Zero is returned in the case of an error.

Definition at line 2165 of file Process.cpp.

References DoReadMemory(), error(), GetABI(), LLDB_SCOPED_TIMER, and RemoveBreakpointOpcodesFromBuffer().

Referenced by lldb_private::PlatformDarwin::ExtractCrashInfoAnnotations(), lldb_private::ProcessStructReader::ProcessStructReader(), ReadMemory(), ReadMemoryInChunks(), and DynamicLoaderDarwinKernel::SearchForKernelWithDebugHints().

◆ ReadMemoryInChunks()

lldb::offset_t Process::ReadMemoryInChunks ( lldb::addr_t vm_addr,
void * buf,
lldb::addr_t chunk_size,
lldb::offset_t total_size,
ReadMemoryChunkCallback callback )

Read of memory from a process in discrete chunks, terminating either when all bytes are read, or the supplied callback returns IterationAction::Stop.

Parameters
[in]vm_addrA virtual load address that indicates where to start reading memory from.
[in]bufIf NULL, a buffer of chunk_size will be created and used for the callback. If non NULL, this buffer must be at least chunk_size bytes and will be used for storing chunked memory reads.
[in]chunk_sizeThe minimum size of the byte buffer, and the chunk size of memory to read.
[in]total_sizeThe total number of bytes to read.
[in]callbackThe callback to invoke when a chunk is read from memory.
Returns
The number of bytes that were actually read into buf and written to the provided callback. If the returned number is greater than zero, yet less than size, then this function will get called again with vm_addr, buf, and size updated appropriately. Zero is returned in the case of an error.

Definition at line 2194 of file Process.cpp.

References error(), lldb_private::WritableDataBuffer::GetBytes(), ReadMemoryFromInferior(), lldb_private::DataBufferHeap::SetByteSize(), and lldb_private::Stop.

◆ ReadMemoryTags()

llvm::Expected< std::vector< lldb::addr_t > > Process::ReadMemoryTags ( lldb::addr_t addr,
size_t len )
virtual

Read memory tags for the range addr to addr+len.

It is assumed that this range has already been granule aligned. (see MemoryTagManager::MakeTaggedRange)

This calls DoReadMemoryTags to do the target specific operations.

Parameters
[in]addrStart of memory range to read tags for.
[in]lenLength of memory range to read tags for (in bytes).
Returns
If this architecture or process does not support memory tagging, an error saying so. If it does, either the memory tags or an error describing a failure to read or unpack them.

Reimplemented in ProcessElfCore.

Definition at line 6470 of file Process.cpp.

References DoReadMemoryTags(), lldb_private::MemoryTagManager::GetAllocationTagType(), lldb_private::MemoryTagManager::GetGranuleSize(), GetMemoryTagManager(), and lldb_private::MemoryTagManager::UnpackTagsData().

Referenced by CommandObjectMemoryTagRead::DoExecute().

◆ ReadModuleFromMemory()

◆ ReadPointerFromMemory()

◆ ReadScalarIntegerFromMemory()

◆ ReadSignedIntegerFromMemory()

int64_t Process::ReadSignedIntegerFromMemory ( lldb::addr_t load_addr,
size_t byte_size,
int64_t fail_value,
Status & error )

◆ ReadUnsignedIntegerFromMemory()

uint64_t Process::ReadUnsignedIntegerFromMemory ( lldb::addr_t load_addr,
size_t byte_size,
uint64_t fail_value,
Status & error )

Reads an unsigned integer of the specified byte size from process memory.

Parameters
[in]load_addrA load address of the integer to read.
[in]byte_sizeThe size in byte of the integer to read.
[in]fail_valueThe value to return if we fail to read an integer.
[out]errorAn error that indicates the success or failure of this operation. If error indicates success (error.Success()), then the value returned can be trusted, otherwise zero will be returned.
Returns
The unsigned integer that was read from the process memory space. If the integer was smaller than a uint64_t, any unused upper bytes will be zero filled. If the process byte order differs from the host byte order, the integer value will be appropriately byte swapped into host byte order.

Definition at line 2238 of file Process.cpp.

References error(), ReadScalarIntegerFromMemory(), and lldb_private::Scalar::ULongLong().

Referenced by lldb_private::PlatformWindows::DoLoadImage(), ExtractRuntimeGlobalSymbol(), lldb_private::FunctionCaller::FetchFunctionResults(), lldb_private::ClassDescriptorV2::method_t::Read(), lldb_private::ClassDescriptorV2::Read_class_row(), and ReadInt().

◆ RefreshStateAfterStop()

virtual void lldb_private::Process::RefreshStateAfterStop ( )
pure virtual

Currently called as part of ShouldStop.

FIXME: Should really happen when the target stops before the event is taken from the queue...

This callback is called as the event is about to be queued up to allow Process plug-ins to execute some code prior to clients being notified that a process was stopped. Common operations include updating the thread list, invalidating any thread state (registers, stack, etc) prior to letting the notification go out.

Implemented in lldb_private::minidump::ProcessMinidump, lldb_private::process_gdb_remote::ProcessGDBRemote, lldb_private::ProcessTrace, lldb_private::ProcessWindows, lldb_private::ScriptedProcess, ProcessElfCore, ProcessFreeBSDKernel, ProcessKDP, and ProcessMachCore.

Referenced by ShouldBroadcastEvent().

◆ RegisterNotificationCallbacks()

void Process::RegisterNotificationCallbacks ( const Process::Notifications & callbacks)

Register for process and thread notifications.

Clients can register notification callbacks by filling out a Process::Notifications structure and calling this function.

Parameters
[in]callbacksA structure that contains the notification baton and callback functions.
See also
Process::Notifications

Definition at line 593 of file Process.cpp.

References lldb_private::Process::Notifications::baton, lldb_private::Process::Notifications::initialize, and m_notifications.

◆ RemoveBreakpointOpcodesFromBuffer()

◆ RemoveConstituentFromBreakpointSite()

void Process::RemoveConstituentFromBreakpointSite ( lldb::user_id_t site_id,
lldb::user_id_t constituent_id,
lldb::BreakpointSiteSP & bp_site_sp )

Definition at line 1703 of file Process.cpp.

References DisableBreakpointSite(), IsAlive(), and m_breakpoint_site_list.

◆ RemoveInvalidMemoryRange()

bool Process::RemoveInvalidMemoryRange ( const LoadRange & region)

◆ ResetExtendedCrashInfoDict()

void lldb_private::Process::ResetExtendedCrashInfoDict ( )
inline

Definition at line 2621 of file Process.h.

References m_crash_info_dict_sp.

Referenced by PrivateResume().

◆ ResetImageToken()

void Process::ResetImageToken ( size_t token)

Definition at line 6157 of file Process.cpp.

References LLDB_INVALID_IMAGE_TOKEN, and m_image_tokens.

Referenced by lldb_private::PlatformWindows::UnloadImage().

◆ ResolveIndirectFunction()

addr_t Process::ResolveIndirectFunction ( const Address * address,
Status & error )
virtual

Resolve dynamically loaded indirect functions.

Parameters
[in]addressThe load address of the indirect function to resolve.
[out]errorAn error value in case the resolve fails.
Returns
The address of the resolved function. LLDB_INVALID_ADDRESS if the resolution failed.

Definition at line 6010 of file Process.cpp.

References lldb_private::ConstString::AsCString(), lldb_private::Address::CalculateSymbolContextSymbol(), CallVoidArgVoidPtrReturn(), error(), lldb_private::Status::FromErrorString(), lldb_private::Status::FromErrorStringWithFormat(), GetABI(), lldb_private::Address::GetLoadAddress(), lldb_private::Symbol::GetName(), GetTarget(), LLDB_INVALID_ADDRESS, and m_resolved_indirect_addresses.

Referenced by CreateBreakpointSite().

◆ RestoreProcessEvents()

void Process::RestoreProcessEvents ( )

Restores the process event broadcasting to its normal state.

Definition at line 927 of file Process.cpp.

References lldb_private::Broadcaster::RestoreBroadcaster().

Referenced by lldb_private::ProcessTrace::DidAttach(), Halt(), LaunchPrivate(), LoadCore(), ResumeSynchronous(), and StopForDestroyOrDetach().

◆ Resume()

Status Process::Resume ( )

Resumes all of a process's threads as configured using the Thread run control functions.

Threads for a process should be updated with one of the run control actions (resume, step, or suspend) that they should take when the process is resumed. If no run control action is given to a thread it will be resumed by default.

This function is not meant to be overridden by Process subclasses. This function will take care of disabling any breakpoints that threads may be stopped at, single stepping, and re-enabling breakpoints, and enabling the basic flow control that the plug-in instances need not worry about.

N.B. This function also sets the Write side of the Run Lock, which is unset when the corresponding stop event is pulled off the Public Event Queue. If you need to resume the process without setting the Run Lock, use PrivateResume (though you should only do that from inside the Process class.

Returns
Returns an error object.
See also
Thread:Resume()
Thread:Step()
Thread:Suspend()

Definition at line 1332 of file Process.cpp.

References error(), lldb_private::Status::FromErrorString(), lldb_private::GetLog(), lldb_private::PluginInterface::GetPluginName(), LLDB_LOGF, m_public_run_lock, PrivateResume(), lldb_private::Process, and lldb_private::State.

Referenced by CommandObjectProcessContinue::DoExecute(), CommandObjectThreadContinue::DoExecute(), CommandObjectThreadStepWithTypeAndScope::DoExecute(), CommandObjectThreadUntil::DoExecute(), ResumeNewPlan(), lldb_private::Thread::StepIn(), lldb_private::Thread::StepOut(), and lldb_private::Thread::StepOver().

◆ ResumePrivateStateThread()

◆ ResumeSynchronous()

◆ RouteAsyncStructuredData()

bool Process::RouteAsyncStructuredData ( const StructuredData::ObjectSP object_sp)
protected

Route the incoming structured data dictionary to the right plugin.

The incoming structured data must be a dictionary, and it must have a key named 'type' that stores a string value. The string value must be the name of the structured data feature that knows how to handle it.

Parameters
[in]object_spWhen non-null and pointing to a dictionary, the 'type' key's string value is used to look up the plugin that was registered for that structured data type. It then calls the following method on the StructuredDataPlugin instance:

virtual void HandleArrivalOfStructuredData(Process &process, llvm::StringRef type_name, const StructuredData::ObjectSP &object_sp)

Returns
True if the structured data was routed to a plugin; otherwise, false.

Definition at line 6341 of file Process.cpp.

References lldb_private::StructuredData::Object::GetAsDictionary(), lldb_private::StructuredData::Dictionary::GetValueForKeyAsString(), and m_structured_data_plugin_map.

Referenced by lldb_private::process_gdb_remote::ProcessGDBRemote::HandleAsyncStructuredDataPacket().

◆ RunPreResumeActions()

◆ RunPrivateStateThread()

◆ RunThreadPlan()

ExpressionResults Process::RunThreadPlan ( ExecutionContext & exe_ctx,
lldb::ThreadPlanSP & thread_plan_sp,
const EvaluateExpressionOptions & options,
DiagnosticManager & diagnostic_manager )

Definition at line 4970 of file Process.cpp.

References lldb_private::Status::AsCString(), lldb_private::Broadcaster::BroadcastEvent(), lldb_private::EvaluateExpressionOptions::DoesIgnoreBreakpoints(), lldb_private::EvaluateExpressionOptions::DoesUnwindOnError(), DoNoSelectMostRelevantFrame, eBroadcastBitInterrupt, lldb::eDescriptionLevelVerbose, lldb::eExpressionCompleted, lldb::eExpressionDiscarded, lldb::eExpressionHitBreakpoint, lldb::eExpressionInterrupted, lldb::eExpressionSetupError, lldb::eExpressionStoppedForDebug, lldb::eExpressionThreadVanished, error(), lldb::eSeverityError, lldb::eSeverityInfo, lldb::eStateExited, lldb::eStateInvalid, lldb::eStateRunning, lldb::eStateStopped, lldb_private::Broadcaster::Event, lldb_private::ThreadList::FindThreadByIndexID(), ForceNextEventDelivery(), lldb_private::Host::GetCurrentThread(), lldb_private::StreamString::GetData(), lldb_private::EvaluateExpressionOptions::GetDebug(), lldb_private::Process::ProcessEventData::GetEventDataFromEvent(), GetExpressionTimeout(), lldb_private::ExecutionContext::GetFrameRef(), lldb_private::Process::ProcessEventData::GetInterruptedFromEvent(), lldb_private::GetLog(), lldb_private::EvaluateExpressionOptions::GetOneThreadTimeout(), lldb_private::RegisterContext::GetPC(), lldb_private::ExecutionContext::GetProcessPtr(), lldb_private::Process::ProcessEventData::GetProcessSP(), lldb_private::Process::ProcessEventData::GetRestartedFromEvent(), lldb_private::ThreadList::GetSelectedThread(), lldb_private::ThreadList::GetSize(), lldb_private::StackFrame::GetStackID(), lldb_private::Process::ProcessEventData::GetStateFromEvent(), lldb_private::EvaluateExpressionOptions::GetStopOthers(), lldb_private::StreamString::GetString(), lldb_private::ThreadList::GetThreadAtIndex(), GetThreadList(), lldb_private::ExecutionContext::GetThreadPtr(), lldb_private::EvaluateExpressionOptions::GetTimeout(), lldb_private::EvaluateExpressionOptions::GetTryAllThreads(), lldb_private::ProcessProperties::GetUtilityExpressionTimeout(), Halt(), HandleStoppedEvent(), lldb_private::ExecutionContext::HasFrameScope(), lldb_private::EvaluateExpressionOptions::IsForUtilityExpr(), lldb_private::HostThread::IsJoinable(), lldb_private::StackID::IsValid(), LLDB_INVALID_THREAD_ID, LLDB_LOG, LLDB_LOGF, m_private_state, m_private_state_thread, m_public_state, m_run_thread_plan_lock, lldb_private::Listener::MakeListener(), lldb_private::DiagnosticManager::Printf(), lldb_private::Stream::Printf(), PrivateResume(), lldb_private::Process, Process(), lldb_private::Log::PutCString(), lldb_private::Stream::PutCString(), lldb_private::DiagnosticManager::PutString(), lldb_private::Log::PutString(), lldb_private::ExecutionContext::SetFrameSP(), StartPrivateStateThread(), lldb_private::StateAsCString(), lldb_private::Step, StopPrivateStateThread(), lldb_private::Status::Success(), ThreadList, and UINT32_MAX.

Referenced by CallVoidArgVoidPtrReturn(), lldb_private::LLVMUserExpression::DoExecute(), lldb_private::FunctionCaller::ExecuteFunction(), lldb_private::InferiorCallMmap(), lldb_private::InferiorCallMunmap(), and IRInterpreter::Interpret().

◆ SaveCore()

llvm::Expected< bool > Process::SaveCore ( llvm::StringRef outfile)
virtual

Save core dump into the specified file.

Parameters
[in]outfilePath to store core dump in.
Returns
true if saved successfully, false if saving the core dump is not supported by the plugin, error otherwise.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 2836 of file Process.cpp.

◆ SendAsyncInterrupt()

void Process::SendAsyncInterrupt ( Thread * thread = nullptr)

Send an async interrupt request.

If thread is specified the async interrupt stop will be attributed to the specified thread.

Parameters
[in]threadThe thread the async interrupt will be attributed to.

Definition at line 3898 of file Process.cpp.

References lldb_private::Broadcaster::BroadcastEvent(), eBroadcastBitInterrupt, LLDB_INVALID_THREAD_ID, m_interrupt_tid, m_private_state_broadcaster, and PrivateStateThreadIsValid().

Referenced by Halt(), lldb_private::TargetList::SendAsyncInterrupt(), and StopForDestroyOrDetach().

◆ SendEventData()

virtual Status lldb_private::Process::SendEventData ( const char * data)
inlinevirtual

◆ SetAddressableBitMasks()

◆ SetBaseDirection()

void Process::SetBaseDirection ( lldb::RunDirection direction)

Set the base run direction for the process.

As a side-effect, if this changes the base direction, then we discard all non-base thread plans to ensure that when execution resumes we definitely execute in the requested direction. FIXME: this is overkill. In some situations ensuring the latter would not require discarding all non-base thread plans.

Definition at line 3234 of file Process.cpp.

References m_base_direction, and m_thread_list.

Referenced by CommandObjectProcessContinue::DoExecute().

◆ SetCanInterpretFunctionCalls()

void lldb_private::Process::SetCanInterpretFunctionCalls ( bool can_interpret_function_calls)
inline

Sets whether executing function calls using the interpreter is possible for this process.

Parameters
[in]can_interpret_function_callsTrue if possible; false otherwise.

Definition at line 2048 of file Process.h.

References m_can_interpret_function_calls.

◆ SetCanJIT()

void Process::SetCanJIT ( bool can_jit)

Sets whether executing JIT-compiled code in this process is possible.

Parameters
[in]can_jitTrue if execution of JIT code is possible; false otherwise.

Definition at line 2486 of file Process.cpp.

References eCanJITNo, eCanJITYes, and m_can_jit.

Referenced by lldb_private::ProcessTrace::DidAttach(), ProcessKDP::DoConnectRemote(), ProcessElfCore::DoLoadCore(), ProcessMachCore::DoLoadCore(), and SetCanRunCode().

◆ SetCanRunCode()

void Process::SetCanRunCode ( bool can_run_code)

Sets whether executing code in this process is possible.

This could be either through JIT or interpreting.

Parameters
[in]can_run_codeTrue if execution of code is possible; false otherwise.

Definition at line 2490 of file Process.cpp.

References m_can_interpret_function_calls, and SetCanJIT().

Referenced by DynamicLoaderDarwinKernel::DynamicLoaderDarwinKernel(), and DynamicLoaderFreeBSDKernel::DynamicLoaderFreeBSDKernel().

◆ SetCodeAddressMask()

void Process::SetCodeAddressMask ( lldb::addr_t code_address_mask)

◆ SetDataAddressMask()

void Process::SetDataAddressMask ( lldb::addr_t data_address_mask)

◆ SetDynamicCheckers()

void Process::SetDynamicCheckers ( DynamicCheckerFunctions * dynamic_checkers)

◆ SetDynamicLoader()

void Process::SetDynamicLoader ( lldb::DynamicLoaderUP dyld)

Definition at line 2830 of file Process.cpp.

References m_dyld_up.

◆ SetExitStatus()

bool Process::SetExitStatus ( int exit_status,
llvm::StringRef exit_string )
virtual

Set accessor for the process exit status (return code).

Sometimes a child exits and the exit can be detected by global functions (signal handler for SIGCHLD for example). This accessor allows the exit status to be set from an external source.

Setting this will cause a eStateExited event to be posted to the process event queue.

Parameters
[in]exit_statusThe value for the process's return code.
[in]exit_stringA StringRef containing the reason for exiting. May be empty.
Returns
Returns false if the process was already in an exited state, true otherwise.

Definition at line 1024 of file Process.cpp.

References DidExit(), lldb_private::telemetry::ScopedDispatcher< Info >::DispatchNow(), lldb_private::telemetry::ScopedDispatcher< Info >::DispatchOnExit(), lldb::eStateExited, lldb_private::telemetry::ProcessExitInfo::exit_desc, lldb_private::GetLog(), lldb_private::PluginInterface::GetPluginName(), lldb_private::telemetry::ProcessExitInfo::is_start_entry, LLDB_LOG, m_exit_status, m_exit_status_mutex, m_exit_string, m_mod_id, m_pid, m_private_state, m_target_wp, lldb_private::telemetry::ProcessExitInfo::module_uuid, lldb_private::telemetry::ProcessExitInfo::pid, lldb_private::Process, lldb_private::telemetry::ScopedDispatcher< Info >::SetDebugger(), SetPrivateState(), and lldb_private::State.

Referenced by lldb_private::process_gdb_remote::ProcessGDBRemote::AsyncThread(), Attach(), lldb_private::process_gdb_remote::ProcessGDBRemote::DoAttachToProcessWithID(), lldb_private::process_gdb_remote::ProcessGDBRemote::DoAttachToProcessWithName(), lldb_private::process_gdb_remote::ProcessGDBRemote::DoDestroy(), Halt(), HandlePrivateEvent(), LaunchPrivate(), and lldb_private::ProcessWindows::OnExitProcess().

◆ SetHighmemCodeAddressMask()

void Process::SetHighmemCodeAddressMask ( lldb::addr_t code_address_mask)

◆ SetHighmemDataAddressMask()

void Process::SetHighmemDataAddressMask ( lldb::addr_t data_address_mask)

◆ SetID()

◆ SetNextEventAction()

void lldb_private::Process::SetNextEventAction ( Process::NextEventAction * next_event_action)
inlineprotected

Definition at line 2976 of file Process.h.

References m_next_event_action_up.

Referenced by Attach(), and HandlePrivateEvent().

◆ SetPrivateState()

◆ SetProcessExitStatus()

bool Process::SetProcessExitStatus ( lldb::pid_t pid,
bool exited,
int signo,
int status )
static

Static function that can be used with the host function Host::StartMonitoringChildProcess ().

This function can be used by lldb_private::Process subclasses when they want to watch for a local process and have its exit status automatically set when the host child process exits. Subclasses should call Host::StartMonitoringChildProcess () with: callback = Process::SetHostProcessExitStatus pid = Process::GetID() monitor_signals = false

Definition at line 1102 of file Process.cpp.

References lldb_private::Debugger::FindTargetWithProcessID(), lldb_private::GetLog(), LLDB_LOGF, and lldb_private::Process.

◆ SetPublicState()

◆ SetRunningUserExpression()

void Process::SetRunningUserExpression ( bool on)

◆ SetRunningUtilityFunction()

void Process::SetRunningUtilityFunction ( bool on)

Definition at line 1475 of file Process.cpp.

References m_mod_id.

◆ SetShadowListener()

void lldb_private::Process::SetShadowListener ( lldb::ListenerSP shadow_listener_sp)
inline

The "ShadowListener" for a process is just an ordinary Listener that listens for all the Process event bits.

It's convenient because you can specify it in the LaunchInfo or AttachInfo, so it will get events from the very start of the process.

Definition at line 643 of file Process.h.

References lldb_private::Broadcaster::AddListener(), and g_all_event_bits.

◆ SetShouldDetach()

void lldb_private::Process::SetShouldDetach ( bool b)
inline

Definition at line 782 of file Process.h.

References m_should_detach.

◆ SetSTDIOFileDescriptor()

void Process::SetSTDIOFileDescriptor ( int file_descriptor)

◆ SettingsInitialize()

void Process::SettingsInitialize ( )
static

◆ SettingsTerminate()

void Process::SettingsTerminate ( )
static

◆ SetUnixSignals()

◆ ShouldBroadcastEvent()

bool Process::ShouldBroadcastEvent ( Event * event_ptr)
private

This is the part of the event handling that for a process event.

It decides what to do with the event and returns true if the event needs to be propagated to the user, and false otherwise. If the event is not propagated, this call will most likely set the target to executing again. There is only one place where this call should be called, HandlePrivateEvent. Don't call it from anywhere else...

Parameters
[in]event_ptrThis is the event we are handling.
Returns
Returns true if the event should be reported to the user, false otherwise.

Definition at line 3624 of file Process.cpp.

References lldb::eStateAttaching, lldb::eStateConnected, lldb::eStateCrashed, lldb::eStateDetached, lldb::eStateExited, lldb::eStateInvalid, lldb::eStateLaunching, lldb::eStateRunning, lldb::eStateStepping, lldb::eStateStopped, lldb::eStateSuspended, lldb::eStateUnloaded, lldb_private::Broadcaster::Event, lldb_private::Events, lldb_private::eVoteNo, lldb_private::eVoteNoOpinion, lldb_private::eVoteYes, lldb_private::Process::ProcessEventData::GetInterruptedFromEvent(), lldb_private::GetLog(), lldb_private::Process::ProcessEventData::GetRestartedFromEvent(), lldb_private::Process::ProcessEventData::GetStateFromEvent(), LLDB_LOGF, m_force_next_event_delivery, m_last_broadcast_state, m_resume_requested, m_stdin_forward, m_stdio_communication, m_thread_list, PrivateResume(), lldb_private::Process, RefreshStateAfterStop(), lldb_private::Process::ProcessEventData::SetRestartedInEvent(), lldb_private::StateAsCString(), and SynchronouslyNotifyStateChanged().

Referenced by HandlePrivateEvent().

◆ Signal()

Status Process::Signal ( int signal)

Sends a process a UNIX signal signal.

This function is not meant to be overridden by Process subclasses.

Returns
Returns an error object.

Definition at line 3596 of file Process.cpp.

References DidSignal(), DoSignal(), error(), and WillSignal().

Referenced by CommandObjectProcessSignal::DoExecute(), and lldb_private::TargetList::SignalIfRunning().

◆ StartNoticingNewThreads()

virtual bool lldb_private::Process::StartNoticingNewThreads ( )
inlinevirtual

Call this to set the lldb in the mode where it breaks on new thread creations, and then auto-restarts.

This is useful when you are trying to run only one thread, but either that thread or the kernel is creating new threads in the process. If you stop when the thread is created, you can immediately suspend it, and keep executing only the one thread you intend.

Returns
Returns true if we were able to start up the notification false otherwise.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 2493 of file Process.h.

◆ StartPrivateStateThread()

◆ StateChangedIsExternallyHijacked()

bool Process::StateChangedIsExternallyHijacked ( )

◆ StateChangedIsHijackedForSynchronousResume()

◆ STDIOReadThreadBytesReceived()

void Process::STDIOReadThreadBytesReceived ( void * baton,
const void * src,
size_t src_len )
staticprotected

Definition at line 4626 of file Process.cpp.

References AppendSTDOUT(), and Process().

Referenced by SetSTDIOFileDescriptor().

◆ StopForDestroyOrDetach()

◆ StopNoticingNewThreads()

virtual bool lldb_private::Process::StopNoticingNewThreads ( )
inlinevirtual

Call this to turn off the stop & notice new threads mode.

Returns
Returns true if we were able to start up the notification false otherwise.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 2500 of file Process.h.

◆ StopPrivateStateThread()

void Process::StopPrivateStateThread ( )
protected

◆ SupportsMemoryTagging()

virtual bool lldb_private::Process::SupportsMemoryTagging ( )
inlineprotectedvirtual

Check whether the process supports memory tagging.

Returns
true if the process supports memory tagging, false otherwise.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote, and ProcessElfCore.

Definition at line 3055 of file Process.h.

Referenced by GetMemoryTagManager().

◆ SupportsReverseDirection()

virtual bool lldb_private::Process::SupportsReverseDirection ( )
inlinevirtual

Reports whether this process supports reverse execution.

Returns
Returns true if the process supports reverse execution (at least under some circumstances).

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 1111 of file Process.h.

◆ SynchronouslyNotifyStateChanged()

void Process::SynchronouslyNotifyStateChanged ( lldb::StateType state)
protected

Definition at line 612 of file Process.cpp.

References m_notifications.

Referenced by ShouldBroadcastEvent().

◆ SyncIOHandler()

void Process::SyncIOHandler ( uint32_t iohandler_id,
const Timeout< std::micro > & timeout )

Waits for the process state to be running within a given msec timeout.

The main purpose of this is to implement an interlock waiting for HandlePrivateEvent to push an IOHandler.

Parameters
[in]timeoutThe maximum time length to wait for the process to transition to the eStateRunning state.

Definition at line 644 of file Process.cpp.

References lldb_private::GetLog(), LLDB_LOG, m_iohandler_sync, lldb_private::Process, and ProcessIOHandlerExists().

Referenced by CommandObjectProcessContinue::DoExecute(), and CommandObjectThreadStepWithTypeAndScope::DoExecute().

◆ Threads()

◆ TraceGetBinaryData()

virtual llvm::Expected< std::vector< uint8_t > > lldb_private::Process::TraceGetBinaryData ( const TraceGetBinaryDataRequest & request)
inlineprotectedvirtual

Get binary data given a trace technology and a data identifier.

Parameters
[in]requestObject with the params of the requested data.
Returns
A vector of bytes with the requested data, or an llvm::Error in case of failures.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 2832 of file Process.h.

◆ TraceGetState()

virtual llvm::Expected< std::string > lldb_private::Process::TraceGetState ( llvm::StringRef type)
inlineprotectedvirtual

Get the current tracing state of the process and its threads.

Parameters
[in]typeTracing technology type to consider.
Returns
A JSON object string with custom data depending on the trace technology, or an llvm::Error in case of errors.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 2819 of file Process.h.

◆ TraceStart()

virtual llvm::Error lldb_private::Process::TraceStart ( const llvm::json::Value & request)
inlineprotectedvirtual

Start tracing a process or its threads.

Parameters
[in]requestJSON object with the information necessary to start tracing. In the case of gdb-remote processes, this JSON object should conform to the jLLDBTraceStart packet.
Returns
llvm::Error::success if the operation was successful, or llvm::Error otherwise.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 2795 of file Process.h.

◆ TraceStop()

virtual llvm::Error lldb_private::Process::TraceStop ( const TraceStopRequest & request)
inlineprotectedvirtual

Stop tracing a live process or its threads.

Parameters
[in]requestThe information determining which threads or process to stop tracing.
Returns
llvm::Error::success if the operation was successful, or llvm::Error otherwise.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 2807 of file Process.h.

◆ TraceSupported()

llvm::Expected< TraceSupportedResponse > Process::TraceSupported ( )
protectedvirtual

Get the processor tracing type supported for this process.

Responses might be different depending on the architecture and capabilities of the underlying OS.

Returns
The supported trace type or an llvm::Error if tracing is not supported for the inferior.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 6386 of file Process.cpp.

References IsLiveDebugSession().

◆ UnregisterNotificationCallbacks()

bool Process::UnregisterNotificationCallbacks ( const Process::Notifications & callbacks)

Unregister for process and thread notifications.

Clients can unregister notification callbacks by passing a copy of the original baton and callbacks in callbacks.

Parameters
[in]callbacksA structure that contains the notification baton and callback functions.
Returns
Returns true if the notification callbacks were successfully removed from the process, false otherwise.
See also
Process::Notifications

Definition at line 599 of file Process.cpp.

References lldb_private::Process::Notifications::baton, lldb_private::Process::Notifications::initialize, m_notifications, and lldb_private::Process::Notifications::process_state_changed.

◆ UpdateAutomaticSignalFiltering()

Status Process::UpdateAutomaticSignalFiltering ( )
protectedvirtual

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 6370 of file Process.cpp.

References lldb_private::Status.

Referenced by LaunchPrivate(), and PrivateResume().

◆ UpdateQueueListIfNeeded()

void Process::UpdateQueueListIfNeeded ( )
virtual

◆ UpdateThreadList()

bool Process::UpdateThreadList ( ThreadList & old_thread_list,
ThreadList & new_thread_list )

Update the thread list.

This method performs some general clean up before invoking DoUpdateThreadList, which should be implemented by each process plugin.

Returns
true if the new thread list could be generated, false otherwise.

Definition at line 1128 of file Process.cpp.

References DoUpdateThreadList(), m_thread_plans, and ThreadList.

Referenced by UpdateThreadListIfNeeded().

◆ UpdateThreadListIfNeeded()

◆ WaitForProcessStopPrivate()

StateType Process::WaitForProcessStopPrivate ( lldb::EventSP & event_sp,
const Timeout< std::micro > & timeout )
protected

◆ WaitForProcessToStop()

◆ WarnBeforeDetach()

virtual bool lldb_private::Process::WarnBeforeDetach ( ) const
inlinevirtual

Before lldb detaches from a process, it warns the user that they are about to lose their debug session.

In some cases, this warning doesn't need to be emitted – for instance, with core file debugging where the user can reconstruct the "state" by simply re-running the debugger on the core file.

Returns
Returns true if the user should be warned about detaching from this process.

Reimplemented in lldb_private::minidump::ProcessMinidump, lldb_private::ProcessTrace, ProcessElfCore, and ProcessMachCore.

Definition at line 1537 of file Process.h.

◆ WillAttachToProcessWithID()

Status Process::WillAttachToProcessWithID ( lldb::pid_t pid)

Called before attaching to a process.

Returns
Returns an error object.

Definition at line 2941 of file Process.cpp.

References DoWillAttachToProcessWithID().

Referenced by Attach().

◆ WillAttachToProcessWithName()

Status Process::WillAttachToProcessWithName ( const char * process_name,
bool wait_for_launch )

Called before attaching to a process.

Returns
Returns an error object.

Definition at line 2945 of file Process.cpp.

References DoWillAttachToProcessWithName().

Referenced by Attach().

◆ WillDestroy()

virtual Status lldb_private::Process::WillDestroy ( )
inlinevirtual

Definition at line 1223 of file Process.h.

References lldb_private::Status.

Referenced by DestroyImpl().

◆ WillDetach()

virtual Status lldb_private::Process::WillDetach ( )
inlinevirtual

Called before detaching from a process.

Allow Process plug-ins to execute some code before detaching from a process.

Returns
Returns an error object.

Definition at line 1181 of file Process.h.

References lldb_private::Status.

Referenced by Detach().

◆ WillHalt()

virtual Status lldb_private::Process::WillHalt ( )
inlinevirtual

Called before halting to a process.

Allow Process plug-ins to execute some code before halting a process.

Returns
Returns an error object.

Definition at line 1147 of file Process.h.

References lldb_private::Status.

Referenced by HaltPrivate().

◆ WillLaunch()

Status Process::WillLaunch ( Module * module)

Called before launching to a process.

Returns
Returns an error object.

Definition at line 2937 of file Process.cpp.

References DoWillLaunch().

Referenced by LaunchPrivate().

◆ WillPublicStop()

virtual void lldb_private::Process::WillPublicStop ( )
inlinevirtual

Called when the process is about to broadcast a public stop.

There are public and private stops. Private stops are when the process is doing things like stepping and the client doesn't need to know about starts and stop that implement a thread plan. Single stepping over a source line in code might end up being implemented by one or more process starts and stops. Public stops are when clients will be notified that the process is stopped. These events typically trigger UI updates (thread stack frames to be displayed, variables to be displayed, and more). This function can be overriden and allows process subclasses to do something before the eBroadcastBitStateChanged event is sent to public clients.

Reimplemented in lldb_private::process_gdb_remote::ProcessGDBRemote.

Definition at line 816 of file Process.h.

◆ WillResume()

virtual Status lldb_private::Process::WillResume ( )
inlinevirtual

Called before resuming to a process.

Allow Process plug-ins to execute some code before resuming a process.

Returns
Returns an error object.

Reimplemented in lldb_private::minidump::ProcessMinidump, lldb_private::process_gdb_remote::ProcessGDBRemote, lldb_private::ProcessTrace, ProcessElfCore, and ProcessKDP.

Definition at line 1104 of file Process.h.

References lldb_private::Status.

Referenced by PrivateResume().

◆ WillSignal()

virtual Status lldb_private::Process::WillSignal ( )
inlinevirtual

Called before sending a signal to a process.

Allow Process plug-ins to execute some code before sending a signal to a process.

Returns
Returns no error if it is safe to proceed with a call to Process::DoSignal(int), otherwise an error describing what prevents the signal from being sent.

Definition at line 1211 of file Process.h.

References lldb_private::Status.

Referenced by Signal().

◆ WriteMemory()

size_t Process::WriteMemory ( lldb::addr_t vm_addr,
const void * buf,
size_t size,
Status & error )

Write memory to a process.

This function will write memory to the current process's address space and maintain any traps that might be present due to software breakpoints.

This function is not meant to be overridden by Process subclasses, the subclasses should implement Process::DoWriteMemory (lldb::addr_t, size_t, void *).

Parameters
[in]vm_addrA virtual load address that indicates where to start writing memory to.
[in]bufA byte buffer that is at least size bytes long that contains the data to write.
[in]sizeThe number of bytes to write.
Returns
The number of bytes that were actually written.

Definition at line 2296 of file Process.cpp.

References error(), lldb_private::BreakpointSite::eSoftware, lldb_private::StopPointSiteList< StopPointSite >::ForEach(), lldb_private::Status::FromErrorString(), GetABI(), lldb_private::BreakpointSite::GetSavedOpcodeBytes(), lldb_private::BreakpointSite::GetType(), lldb_private::BreakpointSite::IntersectsRange(), lldb_private::StopPointSiteList< StopPointSite >::IsEmpty(), m_allocated_memory_cache, m_breakpoint_site_list, m_memory_cache, m_mod_id, lldb_private::ProcessProperties::TrackMemoryCacheChanges(), UNUSED_IF_ASSERT_DISABLED, and WriteMemoryPrivate().

Referenced by CallocateMemory(), CommandObjectMemoryWrite::DoExecute(), lldb_private::PlatformWindows::DoLoadImage(), lldb_private::ValueObject::SetData(), WriteObjectFile(), and WriteScalarToMemory().

◆ WriteMemoryPrivate()

size_t Process::WriteMemoryPrivate ( lldb::addr_t addr,
const void * buf,
size_t size,
Status & error )
protected

Definition at line 2280 of file Process.cpp.

References DoWriteMemory(), and error().

Referenced by WriteMemory().

◆ WriteMemoryTags()

Status Process::WriteMemoryTags ( lldb::addr_t addr,
size_t len,
const std::vector< lldb::addr_t > & tags )

Write memory tags for a range of memory.

(calls DoWriteMemoryTags to do the target specific work)

Parameters
[in]addrThe address to start writing tags from. It is assumed that this address is granule aligned.
[in]lenThe size of the range to write tags for. It is assumed that this is some multiple of the granule size. This len can be different from (number of tags * granule size) in the case where you want lldb-server to repeat tags across the range.
[in]tagsAllocation tags to be written. Since lldb-server can repeat tags for a range, the number of tags doesn't have to match the number of granules in the range. (though most of the time it will)
Returns
A Status telling you if the write succeeded or not.

Definition at line 6486 of file Process.cpp.

References DoWriteMemoryTags(), lldb_private::Status::FromError(), lldb_private::MemoryTagManager::GetAllocationTagType(), GetMemoryTagManager(), and lldb_private::MemoryTagManager::PackTags().

Referenced by CommandObjectMemoryTagWrite::DoExecute().

◆ WriteObjectFile()

Status Process::WriteObjectFile ( std::vector< ObjectFile::LoadableData > entries)
virtual

◆ WritePointerToMemory()

bool Process::WritePointerToMemory ( lldb::addr_t vm_addr,
lldb::addr_t ptr_value,
Status & error )

◆ WriteScalarToMemory()

size_t Process::WriteScalarToMemory ( lldb::addr_t vm_addr,
const Scalar & scalar,
size_t size,
Status & error )

Write all or part of a scalar value to memory.

The value contained in scalar will be swapped to match the byte order of the process that is being debugged. If size is less than the size of scalar, the least significant size bytes from scalar will be written. If size is larger than the byte size of scalar, then the extra space will be padded with zeros and the scalar value will be placed in the least significant bytes in memory.

Parameters
[in]vm_addrA virtual load address that indicates where to start writing memory to.
[in]scalarThe scalar to write to the debugged process.
[in]sizeThis value can be smaller or larger than the scalar value itself. If size is smaller than the size of scalar, the least significant bytes in scalar will be used. If size is larger than the byte size of scalar, then the extra space will be padded with zeros. If size is set to UINT32_MAX, then the size of scalar will be used.
[out]errorAn error value in case the memory write fails.
Returns
The number of bytes that were actually written.

Definition at line 2377 of file Process.cpp.

References error(), lldb_private::Status::FromErrorString(), lldb_private::Scalar::GetAsMemoryData(), GetByteOrder(), lldb_private::Scalar::GetByteSize(), UINT32_MAX, and WriteMemory().

Referenced by lldb_private::PlatformWindows::DoLoadImage(), lldb_private::ValueObject::SetValueFromCString(), lldb_private::FunctionCaller::WriteFunctionArguments(), and WritePointerToMemory().

◆ Debugger

◆ DynamicLoader

◆ FunctionCaller

friend class FunctionCaller
friend

Definition at line 358 of file Process.h.

References FunctionCaller.

Referenced by FunctionCaller.

◆ ProcessEventData

friend class ProcessEventData
friend

Definition at line 361 of file Process.h.

Referenced by SetPrivateState().

◆ ProcessEventHijacker

friend class ProcessEventHijacker
friend

Definition at line 2371 of file Process.h.

◆ ProcessProperties

friend class ProcessProperties
friend

Definition at line 2372 of file Process.h.

References ProcessProperties.

Referenced by GetGlobalProperties(), Process(), and ProcessProperties.

◆ StopInfo

friend class StopInfo
friend

Definition at line 362 of file Process.h.

References StopInfo.

Referenced by StopInfo.

◆ Target

◆ ThreadList

◆ Trace

friend class Trace
friend

Definition at line 2765 of file Process.h.

References Trace.

Referenced by Trace.

Member Data Documentation

◆ AttachSynchronousHijackListenerName

llvm::StringRef lldb_private::Process::AttachSynchronousHijackListenerName
staticconstexpr
Initial value:
=
"lldb.internal.Process.AttachSynchronous.hijack"

Definition at line 402 of file Process.h.

Referenced by lldb_private::Target::Attach().

◆ g_all_event_bits

int lldb_private::Process::g_all_event_bits
staticconstexpr

◆ LaunchSynchronousHijackListenerName

llvm::StringRef lldb_private::Process::LaunchSynchronousHijackListenerName
staticconstexpr
Initial value:
=
"lldb.internal.Process.LaunchSynchronous.hijack"

Definition at line 404 of file Process.h.

Referenced by lldb_private::Target::Launch().

◆ m_abi_sp

lldb::ABISP lldb_private::Process::m_abi_sp
protected

This is the current signal set for this process.

Definition at line 3190 of file Process.h.

Referenced by Attach(), ConnectRemote(), DidExec(), Finalize(), GetABI(), LaunchPrivate(), and Process().

◆ m_allocated_memory_cache

AllocatedMemoryCache lldb_private::Process::m_allocated_memory_cache
protected

Definition at line 3203 of file Process.h.

Referenced by AllocateMemory(), DeallocateMemory(), DidExec(), Finalize(), Process(), and WriteMemory().

◆ m_base_direction

lldb::RunDirection lldb_private::Process::m_base_direction
protected

ThreadPlanBase run direction.

Definition at line 3163 of file Process.h.

Referenced by GetBaseDirection(), Process(), and SetBaseDirection().

◆ m_breakpoint_site_list

◆ m_can_interpret_function_calls

bool lldb_private::Process::m_can_interpret_function_calls
protected

◆ []

enum { ... } lldb_private::Process::m_can_jit

Referenced by CanJIT(), Process(), and SetCanJIT().

◆ m_clear_thread_plans_on_stop

bool lldb_private::Process::m_clear_thread_plans_on_stop
protected

Definition at line 3249 of file Process.h.

Referenced by Halt(), Process(), and RunPrivateStateThread().

◆ m_code_address_mask

lldb::addr_t lldb_private::Process::m_code_address_mask = LLDB_INVALID_ADDRESS_MASK
protected

Mask for code an data addresses.

The default value LLDB_INVALID_ADDRESS_MASK means no mask has been set, and addresses values should not be modified. In these masks, the bits are set to 1 indicate bits that are not significant for addressing. The highmem masks are for targets where we may have different masks for low memory versus high memory addresses, and they will be left as LLDB_INVALID_ADDRESS_MASK normally, meaning the base masks should be applied to all addresses.

Definition at line 3243 of file Process.h.

Referenced by GetCodeAddressMask(), and SetCodeAddressMask().

◆ m_crash_info_dict_sp

StructuredData::DictionarySP lldb_private::Process::m_crash_info_dict_sp
protected

A repository for extra crash information, consulted in GetExtendedCrashInformation.

Definition at line 3272 of file Process.h.

Referenced by GetExtendedCrashInfoDict(), Process(), and ResetExtendedCrashInfoDict().

◆ m_currently_handling_do_on_removals

bool lldb_private::Process::m_currently_handling_do_on_removals
protected

Definition at line 3213 of file Process.h.

Referenced by Process().

◆ m_data_address_mask

lldb::addr_t lldb_private::Process::m_data_address_mask = LLDB_INVALID_ADDRESS_MASK
protected

Definition at line 3244 of file Process.h.

Referenced by GetDataAddressMask(), and SetDataAddressMask().

◆ m_destroy_in_process

bool lldb_private::Process::m_destroy_in_process
protected

◆ m_destructing

std::atomic<bool> lldb_private::Process::m_destructing
protected

Definition at line 3231 of file Process.h.

Referenced by Finalize(), Process(), and SetPrivateState().

◆ m_dlopen_utility_func_flag_once

llvm::once_flag lldb_private::Process::m_dlopen_utility_func_flag_once
protected

Definition at line 3265 of file Process.h.

Referenced by GetLoadImageUtilityFunction().

◆ m_dlopen_utility_func_up

std::unique_ptr<UtilityFunction> lldb_private::Process::m_dlopen_utility_func_up
protected

Definition at line 3264 of file Process.h.

Referenced by GetLoadImageUtilityFunction().

◆ m_dyld_up

◆ m_dynamic_checkers_up

lldb::DynamicCheckerFunctionsUP lldb_private::Process::m_dynamic_checkers_up
protected

The functions used by the expression parser to validate data that expressions use.

Definition at line 3181 of file Process.h.

Referenced by DidExec(), Finalize(), GetDynamicCheckers(), and SetDynamicCheckers().

◆ m_exit_status

int lldb_private::Process::m_exit_status
protected

The exit status of the process, or -1 if not set.

Definition at line 3145 of file Process.h.

Referenced by GetExitStatus(), Process(), and SetExitStatus().

◆ m_exit_status_mutex

std::mutex lldb_private::Process::m_exit_status_mutex
protected

Mutex so m_exit_status m_exit_string can be safely accessed from multiple threads.

Definition at line 3147 of file Process.h.

Referenced by GetExitDescription(), GetExitStatus(), and SetExitStatus().

◆ m_exit_string

std::string lldb_private::Process::m_exit_string
protected

A textual description of why a process exited.

Definition at line 3146 of file Process.h.

Referenced by GetExitDescription(), and SetExitStatus().

◆ m_extended_thread_list

ThreadList lldb_private::Process::m_extended_thread_list
protected

Constituent for extended threads that may be generated, cleared on natural stops.

Definition at line 3161 of file Process.h.

Referenced by Finalize(), Flush(), GetExtendedThreadList(), Process(), and UpdateThreadListIfNeeded().

◆ m_extended_thread_stop_id

uint32_t lldb_private::Process::m_extended_thread_stop_id
protected

The natural stop id when extended_thread_list was last updated.

Definition at line 3164 of file Process.h.

Referenced by Flush(), Process(), and UpdateThreadListIfNeeded().

◆ m_finalizing

std::atomic<bool> lldb_private::Process::m_finalizing
protected

The tid of the thread that issued the async interrupt, used by thread plan timeout.

It can be LLDB_INVALID_THREAD_ID to indicate user level async interrupt. This is set at the beginning of Process::Finalize() to stop functions from looking up or creating things during or after a finalize call.

Definition at line 3226 of file Process.h.

Referenced by Destroy(), Finalize(), GetLanguageRuntime(), GetLanguageRuntimes(), IsPossibleDynamicValue(), IsValid(), and Process().

◆ m_force_next_event_delivery

bool lldb_private::Process::m_force_next_event_delivery
protected

Definition at line 3250 of file Process.h.

Referenced by ForceNextEventDelivery(), Process(), and ShouldBroadcastEvent().

◆ m_highmem_code_address_mask

lldb::addr_t lldb_private::Process::m_highmem_code_address_mask = LLDB_INVALID_ADDRESS_MASK
protected

Definition at line 3245 of file Process.h.

Referenced by GetHighmemCodeAddressMask(), and SetHighmemCodeAddressMask().

◆ m_highmem_data_address_mask

lldb::addr_t lldb_private::Process::m_highmem_data_address_mask = LLDB_INVALID_ADDRESS_MASK
protected

Definition at line 3246 of file Process.h.

Referenced by GetHighmemDataAddressMask(), and SetHighmemDataAddressMask().

◆ m_image_tokens

std::vector<lldb::addr_t> lldb_private::Process::m_image_tokens
protected

◆ m_instrumentation_runtimes

InstrumentationRuntimeCollection lldb_private::Process::m_instrumentation_runtimes
protected

Definition at line 3208 of file Process.h.

Referenced by DidExec(), Finalize(), GetInstrumentationRuntime(), and ModulesDidLoad().

◆ m_interrupt_tid

◆ m_iohandler_sync

Predicate<uint32_t> lldb_private::Process::m_iohandler_sync
protected

Definition at line 3201 of file Process.h.

Referenced by GetIOHandlerID(), HandlePrivateEvent(), Process(), and SyncIOHandler().

◆ m_jit_loaders_up

lldb::JITLoaderListUP lldb_private::Process::m_jit_loaders_up
protected

◆ m_language_runtimes

LanguageRuntimeCollection lldb_private::Process::m_language_runtimes
protected

Should we detach if the process object goes away with an explicit call to Kill or Detach?

Definition at line 3206 of file Process.h.

Referenced by DidExec(), Finalize(), and GetLanguageRuntime().

◆ m_language_runtimes_mutex

std::recursive_mutex lldb_private::Process::m_language_runtimes_mutex
protected

Definition at line 3207 of file Process.h.

Referenced by DidExec(), Finalize(), GetLanguageRuntime(), and GetLanguageRuntimes().

◆ m_last_broadcast_state

lldb::StateType lldb_private::Process::m_last_broadcast_state
protected

Definition at line 3251 of file Process.h.

Referenced by Process(), RunPrivateStateThread(), and ShouldBroadcastEvent().

◆ m_memory_cache

◆ m_mod_id

◆ m_next_event_action_up

std::unique_ptr<NextEventAction> lldb_private::Process::m_next_event_action_up
protected

Definition at line 3209 of file Process.h.

Referenced by Finalize(), HandlePrivateEvent(), Process(), and SetNextEventAction().

◆ m_notifications

std::vector<Notifications> lldb_private::Process::m_notifications
protected

The list of notifications that this process can deliver.

Definition at line 3172 of file Process.h.

Referenced by Finalize(), RegisterNotificationCallbacks(), SynchronouslyNotifyStateChanged(), and UnregisterNotificationCallbacks().

◆ m_os_up

◆ m_pid

◆ m_pre_resume_actions

std::vector<PreResumeCallbackAndBaton> lldb_private::Process::m_pre_resume_actions
protected

◆ m_private_run_lock

ProcessRunLock lldb_private::Process::m_private_run_lock
protected

Definition at line 3212 of file Process.h.

Referenced by Finalize(), GetRunLock(), Process(), and SetPrivateState().

◆ m_private_state

◆ m_private_state_broadcaster

Broadcaster lldb_private::Process::m_private_state_broadcaster
protected

◆ m_private_state_control_broadcaster

Broadcaster lldb_private::Process::m_private_state_control_broadcaster
protected

◆ m_private_state_listener_sp

lldb::ListenerSP lldb_private::Process::m_private_state_listener_sp
protected

Definition at line 3133 of file Process.h.

Referenced by Finalize(), GetEventsPrivate(), GetStateChangedEventsPrivate(), and Process().

◆ m_private_state_thread

HostThread lldb_private::Process::m_private_state_thread
protected

◆ m_process_input_reader

◆ m_process_input_reader_mutex

std::mutex lldb_private::Process::m_process_input_reader_mutex
mutableprotected

◆ m_process_unique_id

uint32_t lldb_private::Process::m_process_unique_id
protected

Each lldb_private::Process class that is created gets a unique integer ID that increments with each new instance.

Definition at line 3139 of file Process.h.

Referenced by GetUniqueID(), and Process().

◆ m_profile_data

std::vector<std::string> lldb_private::Process::m_profile_data
protected

Definition at line 3200 of file Process.h.

Referenced by BroadcastAsyncProfileData(), GetAsyncProfileData(), and Process().

◆ m_profile_data_comm_mutex

std::recursive_mutex lldb_private::Process::m_profile_data_comm_mutex
protected

Definition at line 3199 of file Process.h.

Referenced by BroadcastAsyncProfileData(), GetAsyncProfileData(), and Process().

◆ m_public_run_lock

◆ m_public_state

◆ m_queue_list

QueueList lldb_private::Process::m_queue_list
protected

The list of libdispatch queues at a given stop point.

Definition at line 3167 of file Process.h.

Referenced by Finalize(), Flush(), GetQueueList(), Process(), Queues(), UpdateQueueListIfNeeded(), lldb_private::ScriptedProcess::UpdateQueueListIfNeeded(), and UpdateThreadListIfNeeded().

◆ m_queue_list_stop_id

uint32_t lldb_private::Process::m_queue_list_stop_id
protected

The natural stop id when queue list was last fetched.

Definition at line 3168 of file Process.h.

Referenced by Finalize(), Flush(), Process(), UpdateQueueListIfNeeded(), and UpdateThreadListIfNeeded().

◆ m_resolved_indirect_addresses

std::map<lldb::addr_t, lldb::addr_t> lldb_private::Process::m_resolved_indirect_addresses
protected

This helps with the Public event coalescing in ShouldBroadcastEvent.

Definition at line 3254 of file Process.h.

Referenced by ResolveIndirectFunction().

◆ m_resume_requested

bool lldb_private::Process::m_resume_requested
protected

Definition at line 3214 of file Process.h.

Referenced by HandlePrivateEvent(), Process(), and ShouldBroadcastEvent().

◆ m_run_thread_plan_lock

std::mutex lldb_private::Process::m_run_thread_plan_lock
protected

Definition at line 3259 of file Process.h.

Referenced by Process(), and RunThreadPlan().

◆ m_should_detach

bool lldb_private::Process::m_should_detach
protected

◆ m_source_file_cache

SourceManager::SourceFileCache lldb_private::Process::m_source_file_cache
protected

Per process source file cache.

Definition at line 3268 of file Process.h.

Referenced by GetSourceFileCache().

◆ m_stderr_data

std::string lldb_private::Process::m_stderr_data
protected

Definition at line 3198 of file Process.h.

Referenced by AppendSTDERR(), GetSTDERR(), and Process().

◆ m_stdin_forward

◆ m_stdio_communication

◆ m_stdio_communication_mutex

std::recursive_mutex lldb_private::Process::m_stdio_communication_mutex
protected

Definition at line 3194 of file Process.h.

Referenced by AppendSTDERR(), AppendSTDOUT(), GetSTDERR(), GetSTDOUT(), and Process().

◆ m_stdout_data

std::string lldb_private::Process::m_stdout_data
protected

Remember if stdin must be forwarded to remote debug server.

Definition at line 3197 of file Process.h.

Referenced by AppendSTDOUT(), GetSTDOUT(), and Process().

◆ m_structured_data_plugin_map

llvm::StringMap<lldb::StructuredDataPluginSP> lldb_private::Process::m_structured_data_plugin_map
protected

◆ m_system_runtime_up

lldb::SystemRuntimeUP lldb_private::Process::m_system_runtime_up
protected

◆ m_target_wp

std::weak_ptr<Target> lldb_private::Process::m_target_wp
protected

◆ m_thread_id_to_index_id_map

std::map<uint64_t, uint32_t> lldb_private::Process::m_thread_id_to_index_id_map
protected

◆ m_thread_index_id

uint32_t lldb_private::Process::m_thread_index_id
protected

Each thread is created with a 1 based index that won't get re-used.

Definition at line 3142 of file Process.h.

Referenced by AssignIndexIDToThread(), and Process().

◆ m_thread_list

◆ m_thread_list_real

◆ m_thread_mutex

std::recursive_mutex lldb_private::Process::m_thread_mutex
protected

Definition at line 3149 of file Process.h.

Referenced by LoadOperatingSystemPlugin().

◆ m_thread_plans

ThreadPlanStackMap lldb_private::Process::m_thread_plans
protected

This is the list of thread plans for threads in m_thread_list, as well as threads we knew existed, but haven't determined that they have died yet.

Definition at line 3156 of file Process.h.

Referenced by lldb_private::ScriptedProcess::DoUpdateThreadList(), DumpThreadPlans(), DumpThreadPlansForTID(), Finalize(), FindThreadPlans(), Process(), PruneThreadPlans(), PruneThreadPlansForTID(), UpdateThreadList(), and UpdateThreadListIfNeeded().

◆ m_unix_signals_sp

◆ m_watchpoint_resource_list

◆ ResumeSynchronousHijackListenerName

llvm::StringRef lldb_private::Process::ResumeSynchronousHijackListenerName
staticconstexpr
Initial value:
=
"lldb.internal.Process.ResumeSynchronous.hijack"

Definition at line 406 of file Process.h.

Referenced by ResumeSynchronous(), and StateChangedIsHijackedForSynchronousResume().


The documentation for this class was generated from the following files: