9#ifndef LLDB_TARGET_PROCESS_H
10#define LLDB_TARGET_PROCESS_H
12#include "lldb/Host/Config.h"
22#include <unordered_set>
62#include "llvm/ADT/AddressRanges.h"
63#include "llvm/ADT/ArrayRef.h"
64#include "llvm/Support/Error.h"
65#include "llvm/Support/Threading.h"
66#include "llvm/Support/VersionTuple.h"
70template <
typename B,
typename S>
struct Range;
132 ProcessInfo::operator=(launch_info);
233 const uint32_t prev_stop_id =
m_stop_id++;
299 "Called SetRunningUtilityFunction(false) without calling "
300 "SetRunningUtilityFunction(true) before?");
339class Process :
public std::enable_shared_from_this<Process>,
389 "lldb.internal.Process.AttachSynchronous.hijack";
391 "lldb.internal.Process.LaunchSynchronous.hijack";
393 "lldb.internal.Process.ResumeSynchronous.hijack";
406 void (*initialize)(
void *baton,
Process *process);
407 void (*process_state_changed)(
void *baton,
Process *process,
422 llvm::StringRef
GetFlavor()
const override;
515 llvm::StringRef plugin_name,
561 bool plugin_specified_by_name) = 0;
570 virtual void Finalize(
bool destructing);
622 "error: {0} does not support loading core files.",
GetPluginName());
630 if (shadow_listener_sp)
663 llvm::function_ref<std::unique_ptr<UtilityFunction>()> factory);
693 return llvm::make_error<llvm::StringError>(
"Not implemented.",
694 llvm::inconvertibleErrorCode());
701 return llvm::createStringError(llvm::inconvertibleErrorCode(),
713 virtual llvm::Expected<bool>
SaveCore(llvm::StringRef outfile);
724 std::vector<lldb::ThreadSP>
882 Status Halt(
bool clear_thread_plans =
false,
bool use_run_lock =
true);
949 bool wait_for_launch);
958 bool wait_for_launch) {
990 "error: {0} does not support attaching to a process by pid",
1076 "error: {0} does not support launching processes",
GetPluginName());
1109 "error: {0} does not support resuming processes",
GetPluginName());
1142 "error: {0} does not support halting processes",
GetPluginName());
1166 "error: {0} does not support detaching from processes",
1195 "error: {0} does not support sending signals to processes",
1281 uint32_t start_frame, uint32_t num_frames,
1282 uint32_t num_frames_with_source,
bool stop_format);
1341 const std::vector<lldb::addr_t> &load_addresses) {
1485 virtual bool SetExitStatus(
int exit_status, llvm::StringRef exit_string);
1619 size_t byte_size, uint64_t fail_value,
1651 "error: {0} does not support writing to processes",
GetPluginName());
1688 bool is_signed,
Scalar &scalar,
1734 "error: {0} does not support allocating in the debug process",
1816 virtual llvm::Expected<std::vector<lldb::addr_t>>
1840 const std::vector<lldb::addr_t> &tags);
1909 return std::nullopt;
1928 size_t size_to_read = 512);
1950 uint32_t &permissions);
2001 "error: {0} does not support deallocating in the debug process",
2119 "error: {0} does not support enabling breakpoints",
GetPluginName());
2124 "error: {0} does not support disabling breakpoints",
GetPluginName());
2165 bool notify =
true);
2238 bool wait_always =
true,
2240 Stream *stream =
nullptr,
bool use_run_lock =
true,
2283 bool &pop_process_io_handler);
2389 bool condense_trivial,
bool skip_unreported_plans);
2409 bool internal,
bool condense_trivial,
2410 bool skip_unreported_plans);
2482 "Sending an event is not supported for this process.");
2512 const llvm::Triple &triple) {}
2668 const uint8_t *buf,
size_t size);
2672 size_t alignment,
size_t max_matches,
2710 virtual llvm::Error
TraceStart(
const llvm::json::Value &request) {
2711 return llvm::make_error<UnimplementedError>();
2723 return llvm::make_error<UnimplementedError>();
2735 return llvm::make_error<UnimplementedError>();
2746 virtual llvm::Expected<std::vector<uint8_t>>
2748 return llvm::make_error<UnimplementedError>();
2754 bool trap_exceptions =
false);
2795 const uint8_t *buf,
size_t size,
2797 size_t max_matches);
2817 "Process::DoGetMemoryRegionInfo() not supported");
2835 return std::nullopt;
2988 virtual llvm::Expected<std::vector<uint8_t>>
2990 return llvm::createStringError(
2991 llvm::inconvertibleErrorCode(),
2992 llvm::formatv(
"{0} does not support reading memory tags",
3015 const std::vector<uint8_t> &tags) {
3017 "{0} does not support writing memory tags",
GetPluginName());
3021 typedef std::map<lldb::LanguageType, lldb::LanguageRuntimeSP>
3189 uint8_t *buf)
const;
static llvm::raw_ostream & error(Stream &strm)
A section + offset based address range class.
A section + offset based address class.
A class which holds the metadata from a remote stub/corefile note about how many bits are used for ad...
An architecture specification class.
void Clear()
Clears the object state.
A command line argument class.
Class that manages the actual breakpoint that will be inserted into the running program.
An event broadcasting class.
uint32_t AddListener(const lldb::ListenerSP &listener_sp, uint32_t event_mask)
Listen for any events specified by event_mask.
A class to manage flag bits.
Encapsulates dynamic check functions used by expressions.
A plug-in interface definition class for dynamic loaders.
"lldb/Target/ExecutionContextScope.h" Inherit from this if your object can reconstruct its execution ...
"lldb/Target/ExecutionContext.h" A class that contains an execution context.
Encapsulates a function that can be called.
Class used by the Process to hold a list of its JITLoaders.
A collection class for Module objects.
A class that describes an executable image and its associated object and symbol files.
A plug-in interface definition class for halted OS helpers.
virtual llvm::StringRef GetPluginName()=0
A C++ wrapper class for providing threaded access to a value of type T.
T GetValue() const
Value get accessor.
void SetDetachOnError(bool enable)
bool ProcessInfoSpecified() const
bool GetIgnoreExisting() const
bool GetDetachOnError() const
ProcessAttachInfo()=default
ProcessAttachInfo(const ProcessLaunchInfo &launch_info)
void SetContinueOnceAttached(bool b)
uint32_t GetResumeCount() const
bool m_continue_once_attached
void SetWaitForLaunch(bool b)
void SetResumeCount(uint32_t c)
void SetProcessPluginName(llvm::StringRef plugin)
bool GetContinueOnceAttached() const
void SetIgnoreExisting(bool b)
lldb::ListenerSP GetListenerForProcess(Debugger &debugger)
std::string m_plugin_name
bool GetWaitForLaunch() const
llvm::StringRef GetProcessPluginName() const
ProcessExperimentalProperties()
lldb::pid_t GetProcessID() const
FileSpec & GetExecutableFile()
lldb::pid_t GetParentProcessID() const
llvm::StringRef GetProcessPluginName() const
bool GetDetachOnError() const
uint32_t GetResumeCount() const
void SetRunningUserExpression(bool on)
lldb::EventSP GetStopEventForStopID(uint32_t stop_id) const
const ProcessModID & operator=(const ProcessModID &rhs)
uint32_t GetMemoryID() const
friend bool operator==(const ProcessModID &lhs, const ProcessModID &rhs)
uint32_t m_running_utility_function
ProcessModID(const ProcessModID &rhs)
void SetStopEventForLastNaturalStopID(lldb::EventSP event_sp)
uint32_t m_running_user_expression
uint32_t GetStopID() const
bool IsRunningUtilityFunction() const
uint32_t m_last_natural_stop_id
bool IsLastResumeForUserExpression() const
uint32_t GetResumeID() const
bool IsRunningExpression() const
uint32_t m_last_user_expression_resume
uint32_t GetLastNaturalStopID() const
lldb::EventSP m_last_natural_stop_event
uint32_t GetLastUserExpressionResumeID() const
bool MemoryIDEqual(const ProcessModID &compare) const
bool StopIDEqual(const ProcessModID &compare) const
void SetRunningUtilityFunction(bool on)
bool GetDetachKeepsStopped() const
bool GetSteppingRunsAllThreads() const
void SetStopOnSharedLibraryEvents(bool stop)
Args GetExtraStartupCommands() const
std::unique_ptr< ProcessExperimentalProperties > m_experimental_properties_up
FollowForkMode GetFollowForkMode() const
uint32_t GetVirtualAddressableBits() const
~ProcessProperties() override
void SetIgnoreBreakpointsInExpressions(bool ignore)
bool GetUnwindOnErrorInExpressions() const
std::chrono::seconds GetInterruptTimeout() const
bool GetDisableLangRuntimeUnwindPlans() const
void SetDetachKeepsStopped(bool keep_stopped)
void SetDisableLangRuntimeUnwindPlans(bool disable)
std::chrono::seconds GetUtilityExpressionTimeout() const
void SetVirtualAddressableBits(uint32_t bits)
bool GetStopOnSharedLibraryEvents() const
void SetHighmemVirtualAddressableBits(uint32_t bits)
void SetOSPluginReportsAllThreads(bool does_report)
bool GetWarningsOptimization() const
void SetUnwindOnErrorInExpressions(bool ignore)
bool GetDisableMemoryCache() const
FileSpec GetPythonOSPluginPath() const
bool GetStopOnExec() const
void SetPythonOSPluginPath(const FileSpec &file)
void SetExtraStartupCommands(const Args &args)
bool GetOSPluginReportsAllThreads() const
bool GetWarningsUnsupportedLanguage() const
uint32_t GetHighmemVirtualAddressableBits() const
bool GetIgnoreBreakpointsInExpressions() const
uint64_t GetMemoryCacheLineSize() const
A class used to prevent the process from starting while other threads are accessing its data,...
EventActionResult HandleBeingInterrupted() override
~AttachCompletionHandler() override=default
const char * GetExitString() override
EventActionResult PerformAction(lldb::EventSP &event_sp) override
std::string m_exit_string
virtual EventActionResult HandleBeingInterrupted()=0
virtual const char * GetExitString()=0
virtual EventActionResult PerformAction(lldb::EventSP &event_sp)=0
virtual void HandleBeingUnshipped()
NextEventAction(Process *process)
virtual ~NextEventAction()=default
lldb::ProcessWP m_process_wp
static bool GetRestartedFromEvent(const Event *event_ptr)
virtual bool ShouldStop(Event *event_ptr, bool &found_valid_stopinfo)
void SetUpdateStateOnRemoval()
static void AddRestartedReason(Event *event_ptr, const char *reason)
void SetInterrupted(bool new_value)
lldb::ProcessSP GetProcessSP() const
std::vector< std::string > m_restarted_reasons
void SetRestarted(bool new_value)
static void SetRestartedInEvent(Event *event_ptr, bool new_value)
const ProcessEventData & operator=(const ProcessEventData &)=delete
static lldb::ProcessSP GetProcessFromEvent(const Event *event_ptr)
static void SetInterruptedInEvent(Event *event_ptr, bool new_value)
bool ForwardEventToPendingListeners(Event *event_ptr) override
This will be queried for a Broadcaster with a primary and some secondary listeners after the primary ...
ProcessEventData(const ProcessEventData &)=delete
llvm::StringRef GetFlavor() const override
~ProcessEventData() override
bool GetInterrupted() const
bool GetRestarted() const
size_t GetNumRestartedReasons()
static bool GetInterruptedFromEvent(const Event *event_ptr)
const char * GetRestartedReasonAtIndex(size_t idx)
static lldb::StateType GetStateFromEvent(const Event *event_ptr)
lldb::StateType GetState() const
static const Process::ProcessEventData * GetEventDataFromEvent(const Event *event_ptr)
static llvm::StringRef GetFlavorString()
void DoOnRemoval(Event *event_ptr) override
void AddRestartedReason(const char *reason)
void Dump(Stream *s) const override
ProcessEventHijacker(Process &process, lldb::ListenerSP listener_sp)
A plug-in interface definition class for debugging a process.
virtual Status EnableBreakpointSite(BreakpointSite *bp_site)
Status WillAttachToProcessWithName(const char *process_name, bool wait_for_launch)
Called before attaching to a process.
virtual llvm::Expected< TraceSupportedResponse > TraceSupported()
Get the processor tracing type supported for this process.
lldb::IOHandlerSP m_process_input_reader
UtilityFunction * GetLoadImageUtilityFunction(Platform *platform, llvm::function_ref< std::unique_ptr< UtilityFunction >()> factory)
Get the cached UtilityFunction that assists in loading binary images into the process.
virtual void DidVForkDone()
Called after reported vfork completion.
virtual void DidFork(lldb::pid_t child_pid, lldb::tid_t child_tid)
Called after a reported fork.
virtual Status DoSignal(int signal)
Sends a process a UNIX signal signal.
virtual Status WillResume()
Called before resuming to a process.
std::mutex m_process_input_reader_mutex
lldb::addr_t m_code_address_mask
Mask for code an data addresses.
StopPointSiteList< lldb_private::BreakpointSite > & GetBreakpointSiteList()
std::vector< lldb::addr_t > m_image_tokens
@ eBroadcastBitStructuredData
@ eBroadcastBitStateChanged
@ eBroadcastBitProfileData
bool PrivateStateThreadIsValid() const
virtual Status DoHalt(bool &caused_stop)
Halts a running process.
virtual void DidLaunch()
Called after launching a process.
virtual Status DisableSoftwareBreakpoint(BreakpointSite *bp_site)
lldb::pid_t GetID() const
Returns the pid of the process or LLDB_INVALID_PROCESS_ID if there is no known pid.
lldb::EventSP GetStopEventForStopID(uint32_t stop_id) const
lldb::break_id_t CreateBreakpointSite(const lldb::BreakpointLocationSP &owner, bool use_hardware)
virtual Status WillSignal()
Called before sending a signal to a process.
void ResetImageToken(size_t token)
lldb::JITLoaderListUP m_jit_loaders_up
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.
void SetNextEventAction(Process::NextEventAction *next_event_action)
Status Destroy(bool force_kill)
Kills the process and shuts down all threads that were spawned to track and monitor the process.
virtual Status WillDetach()
Called before detaching from a process.
virtual Status DoLaunch(Module *exe_module, ProcessLaunchInfo &launch_info)
Launch a new process.
virtual size_t PutSTDIN(const char *buf, size_t buf_size, Status &error)
Puts data into this process's STDIN.
StopPointSiteList< lldb_private::BreakpointSite > m_breakpoint_site_list
This is the list of breakpoint locations we intend to insert in the target.
void ControlPrivateStateThread(uint32_t signal)
ThreadList & GetThreadList()
void SetAddressableBitMasks(AddressableBits bit_masks)
void ClearPreResumeActions()
virtual DataExtractor GetAuxvData()
virtual std::optional< uint32_t > GetWatchpointSlotCount()
Get the number of watchpoints supported by this target.
enum lldb_private::Process::@31 m_can_jit
void SetShadowListener(lldb::ListenerSP shadow_listener_sp)
The "ShadowListener" for a process is just an ordinary Listener that listens for all the Process even...
lldb::ExpressionResults RunThreadPlan(ExecutionContext &exe_ctx, lldb::ThreadPlanSP &thread_plan_sp, const EvaluateExpressionOptions &options, DiagnosticManager &diagnostic_manager)
void PrintWarningUnsupportedLanguage(const SymbolContext &sc)
Print a user-visible warning about a function written in a language that this version of LLDB doesn't...
lldb::StateType GetPrivateState()
Status LaunchPrivate(ProcessLaunchInfo &launch_info, lldb::StateType &state, lldb::EventSP &event_sp)
std::vector< std::string > m_profile_data
bool m_can_interpret_function_calls
Status Resume()
Resumes all of a process's threads as configured using the Thread run control functions.
void PruneThreadPlans()
Prune ThreadPlanStacks for all unreported threads.
void SetUnixSignals(lldb::UnixSignalsSP &&signals_sp)
std::string m_stdout_data
Remember if stdin must be forwarded to remote debug server.
bool RemoveInvalidMemoryRange(const LoadRange ®ion)
uint32_t GetNextThreadIndexID(uint64_t thread_id)
Status PrivateResume()
The "private" side of resuming a process.
void SetDynamicCheckers(DynamicCheckerFunctions *dynamic_checkers)
QueueList::QueueIterable Queues()
void SendAsyncInterrupt(Thread *thread=nullptr)
Send an async interrupt request.
uint32_t GetResumeID() const
void AddInvalidMemoryRegion(const LoadRange ®ion)
virtual void ModulesDidLoad(ModuleList &module_list)
virtual bool WarnBeforeDetach() const
Before lldb detaches from a process, it warns the user that they are about to lose their debug sessio...
InstrumentationRuntimeCollection m_instrumentation_runtimes
std::atomic< bool > m_destructing
virtual Status DoGetMemoryRegionInfo(lldb::addr_t load_addr, MemoryRegionInfo &range_info)
DoGetMemoryRegionInfo is called by GetMemoryRegionInfo after it has removed non address bits from loa...
int GetExitStatus()
Get the exit status for a process.
OperatingSystem * GetOperatingSystem()
Status WillAttachToProcessWithID(lldb::pid_t pid)
Called before attaching to a process.
virtual Status DoDetach(bool keep_stopped)
Detaches from a running or stopped process.
std::unique_ptr< UtilityFunction > m_dlopen_utility_func_up
void SetRunningUtilityFunction(bool on)
void DisableAllBreakpointSites()
uint32_t m_process_unique_id
Each lldb_private::Process class that is created gets a unique integer ID that increments with each n...
int64_t ReadSignedIntegerFromMemory(lldb::addr_t load_addr, size_t byte_size, int64_t fail_value, Status &error)
Address AdvanceAddressToNextBranchInstruction(Address default_stop_addr, AddressRange range_bounds)
Find the next branch instruction to set a breakpoint on.
virtual bool GetLoadAddressPermissions(lldb::addr_t load_addr, uint32_t &permissions)
Attempt to get the attributes for a region of memory in the process.
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.
virtual size_t GetAsyncProfileData(char *buf, size_t buf_size, Status &error)
Get any available profile data.
lldb::addr_t FixDataAddress(lldb::addr_t pc)
lldb::addr_t AllocateMemory(size_t size, uint32_t permissions, Status &error)
The public interface to allocating memory in the process.
std::unique_ptr< NextEventAction > m_next_event_action_up
void SetHighmemDataAddressMask(lldb::addr_t data_address_mask)
bool PruneThreadPlansForTID(lldb::tid_t tid)
Prune ThreadPlanStacks for unreported threads.
virtual void DidDetach()
Called after detaching from a process.
void PausePrivateStateThread()
HostThread m_private_state_thread
Thread ID for the thread that watches internal state events.
Status EnableBreakpointSiteByID(lldb::user_id_t break_id)
ProcessModID GetModID() const
Get the Modification ID of the process.
size_t ReadMemoryFromInferior(lldb::addr_t vm_addr, void *buf, size_t size, Status &error)
Read of memory from a process.
size_t ReadScalarIntegerFromMemory(lldb::addr_t addr, uint32_t byte_size, bool is_signed, Scalar &scalar, Status &error)
virtual Status Launch(ProcessLaunchInfo &launch_info)
Launch a new process.
DynamicCheckerFunctions * GetDynamicCheckers()
std::mutex m_run_thread_plan_lock
static void SettingsInitialize()
virtual StructuredData::DictionarySP GetMetadata()
Fetch process defined metadata.
virtual void DumpPluginHistory(Stream &s)
The underlying plugin might store the low-level communication history for this session.
static constexpr llvm::StringRef AttachSynchronousHijackListenerName
void BroadcastStructuredData(const StructuredData::ObjectSP &object_sp, const lldb::StructuredDataPluginSP &plugin_sp)
Broadcasts the given structured data object from the given plugin.
void Flush()
Flush all data in the process.
bool m_clear_thread_plans_on_stop
lldb::ProcessSP CalculateProcess() override
virtual Status DoResume()
Resumes all of a process's threads as configured using the Thread run control functions.
ProcessRunLock m_public_run_lock
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.
void ResumePrivateStateThread()
void MapSupportedStructuredDataPlugins(const StructuredData::Array &supported_type_names)
Loads any plugins associated with asynchronous structured data and maps the relevant supported type n...
bool GetEventsPrivate(lldb::EventSP &event_sp, const Timeout< std::micro > &timeout, bool control_only)
lldb::ABISP m_abi_sp
This is the current signal set for this process.
virtual void DidSignal()
Called after sending a signal to a process.
virtual SystemRuntime * GetSystemRuntime()
Get the system runtime plug-in for this process.
std::map< uint64_t, uint32_t > m_thread_id_to_index_id_map
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.
lldb::ListenerSP m_private_state_listener_sp
uint32_t m_extended_thread_stop_id
The natural stop id when extended_thread_list was last updated.
Range< lldb::addr_t, lldb::addr_t > LoadRange
static constexpr llvm::StringRef ResumeSynchronousHijackListenerName
bool WritePointerToMemory(lldb::addr_t vm_addr, lldb::addr_t ptr_value, Status &error)
QueueList m_queue_list
The list of libdispatch queues at a given stop point.
void ClearPreResumeAction(PreResumeActionCallback callback, void *baton)
virtual Status WillDestroy()
lldb::ThreadSP CreateOSPluginThread(lldb::tid_t tid, lldb::addr_t context)
std::vector< PreResumeCallbackAndBaton > m_pre_resume_actions
void SetCanJIT(bool can_jit)
Sets whether executing JIT-compiled code in this process is possible.
lldb::StateType GetStateChangedEventsPrivate(lldb::EventSP &event_sp, const Timeout< std::micro > &timeout)
void LoadOperatingSystemPlugin(bool flush)
lldb::StructuredDataPluginSP GetStructuredDataPlugin(llvm::StringRef type_name) const
Returns the StructuredDataPlugin associated with a given type name, if there is one.
lldb::DynamicLoaderUP m_dyld_up
ThreadList & GetExtendedThreadList()
void ResetExtendedCrashInfoDict()
AddressRanges FindRangesInMemory(const uint8_t *buf, uint64_t size, const AddressRanges &ranges, size_t alignment, size_t max_matches, Status &error)
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 lldb_private::StructuredData::ObjectSP GetLoadedDynamicLibrariesInfos(const std::vector< lldb::addr_t > &load_addresses)
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.
virtual llvm::Expected< std::vector< uint8_t > > TraceGetBinaryData(const TraceGetBinaryDataRequest &request)
Get binary data given a trace technology and a data identifier.
virtual Status WriteObjectFile(std::vector< ObjectFile::LoadableData > entries)
std::recursive_mutex m_stdio_communication_mutex
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.
std::map< lldb::LanguageType, lldb::LanguageRuntimeSP > LanguageRuntimeCollection
StopPointSiteList< lldb_private::WatchpointResource > m_watchpoint_resource_list
Watchpoint resources currently in use.
Status DisableBreakpointSiteByID(lldb::user_id_t break_id)
llvm::Expected< const MemoryTagManager * > GetMemoryTagManager()
If this architecture and process supports memory tagging, return a tag manager that can be used to ma...
~Process() override
Destructor.
virtual llvm::Expected< LoadedModuleInfoList > GetLoadedModuleList()
Query remote GDBServer for a detailed loaded library list.
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.
std::recursive_mutex m_profile_data_comm_mutex
lldb::InstrumentationRuntimeSP GetInstrumentationRuntime(lldb::InstrumentationRuntimeType type)
ProcessRunLock::ProcessRunLocker StopLocker
Status ResumeSynchronous(Stream *stream)
Resume a process, and wait for it to stop.
virtual Status SendEventData(const char *data)
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.
lldb::thread_result_t RunPrivateStateThread(bool is_secondary_thread)
virtual Status DoWillLaunch(Module *module)
Called before launching to a process.
virtual Status ConnectRemote(llvm::StringRef remote_url)
Attach to a remote system via a URL.
void AppendSTDOUT(const char *s, size_t len)
llvm::StringMap< lldb::StructuredDataPluginSP > m_structured_data_plugin_map
SourceManager::SourceFileCache m_source_file_cache
Per process source file cache.
virtual Status DisableBreakpointSite(BreakpointSite *bp_site)
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 CalculateExecutionContext(ExecutionContext &exe_ctx) override
Reconstruct the object's execution context into sc.
virtual size_t ReadMemory(lldb::addr_t vm_addr, void *buf, size_t size, Status &error)
Read of memory from a process.
Event * PeekAtStateChangedEvents()
std::vector< Notifications > m_notifications
The list of notifications that this process can deliver.
bool HasAssignedIndexIDToThread(uint64_t sb_thread_id)
ThreadSafeValue< lldb::StateType > m_private_state
void StopPrivateStateThread()
size_t AddImageToken(lldb::addr_t image_ptr)
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 bool DestroyRequiresHalt()
lldb::EventSP CreateEventFromProcessState(uint32_t event_type)
StructuredData::DictionarySP m_crash_info_dict_sp
A repository for extra crash information, consulted in GetExtendedCrashInformation.
Status CalculateCoreFileSaveRanges(const SaveCoreOptions &core_options, CoreFileMemoryRanges &ranges)
Helper function for Process::SaveCore(...) that calculates the address ranges that should be saved.
lldb::ThreadSP CalculateThread() override
lldb::TargetSP CalculateTarget() override
void SetHighmemCodeAddressMask(lldb::addr_t code_address_mask)
virtual lldb_private::StructuredData::ObjectSP GetSharedCacheInfo()
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-mac...
lldb::ByteOrder GetByteOrder() const
Status Detach(bool keep_stopped)
Detaches from a running or stopped process.
virtual void DidVFork(lldb::pid_t child_pid, lldb::tid_t child_tid)
Called after a reported vfork.
void UpdateThreadListIfNeeded()
static constexpr llvm::StringRef LaunchSynchronousHijackListenerName
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.
bool IsValid() const
Return whether this object is valid (i.e.
virtual void DidResume()
Called after resuming a process.
virtual void DidExec()
Called after a process re-execs itself.
void SetCodeAddressMask(lldb::addr_t code_address_mask)
AllocatedMemoryCache m_allocated_memory_cache
ThreadList::ThreadIterable Threads()
virtual Status LoadCore()
uint32_t GetUniqueID() const
@ eBroadcastInternalStateControlResume
@ eBroadcastInternalStateControlStop
@ eBroadcastInternalStateControlPause
std::mutex m_exit_status_mutex
Mutex so m_exit_status m_exit_string can be safely accessed from multiple threads.
Status Signal(int signal)
Sends a process a UNIX signal signal.
void SetDynamicLoader(lldb::DynamicLoaderUP dyld)
virtual lldb_private::StructuredData::ObjectSP GetLoadedDynamicLibrariesInfos()
ThreadPlanStackMap m_thread_plans
This is the list of thread plans for threads in m_thread_list, as well as threads we knew existed,...
std::recursive_mutex m_thread_mutex
virtual Status ConfigureStructuredData(llvm::StringRef type_name, const StructuredData::ObjectSP &config_sp)
Configure asynchronous structured data feature.
virtual Status DoWillAttachToProcessWithName(const char *process_name, bool wait_for_launch)
Called before attaching to a process.
bool m_currently_handling_do_on_removals
bool StartPrivateStateThread(bool is_secondary_thread=false)
void HandlePrivateEvent(lldb::EventSP &event_sp)
void BroadcastAsyncProfileData(const std::string &one_profile_data)
lldb::StateType GetState()
Get accessor for the current process state.
virtual Status DoWillAttachToProcessWithID(lldb::pid_t pid)
Called before attaching to a process.
ProcessRunLock & GetRunLock()
virtual Status DoLoadCore()
Predicate< uint32_t > m_iohandler_sync
virtual llvm::Error TraceStop(const TraceStopRequest &request)
Stop tracing a live process or its threads.
LanguageRuntimeCollection m_language_runtimes
Should we detach if the process object goes away with an explicit call to Kill or Detach?
virtual Status GetMemoryRegions(lldb_private::MemoryRegionInfos ®ion_list)
Obtain all the mapped memory regions within this process.
size_t WriteMemoryPrivate(lldb::addr_t addr, const void *buf, size_t size, Status &error)
virtual bool StopNoticingNewThreads()
Call this to turn off the stop & notice new threads mode.
void GetStatus(Stream &ostrm)
virtual llvm::VersionTuple GetHostMacCatalystVersion()
void SetRunningUserExpression(bool on)
bool IsPossibleDynamicValue(ValueObject &in_value)
uint32_t GetIOHandlerID() const
Process(const Process &)=delete
const Target & GetTarget() const
Get the const target object pointer for this module.
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 ().
virtual FileSpec GetCoreFile() const
Provide a way to retrieve the core dump file that is loaded for debugging.
virtual llvm::Error TraceStart(const llvm::json::Value &request)
Start tracing a process or its threads.
void RemoveConstituentFromBreakpointSite(lldb::user_id_t site_id, lldb::user_id_t constituent_id, lldb::BreakpointSiteSP &bp_site_sp)
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.
lldb::OperatingSystemUP m_os_up
StructuredData::DictionarySP GetExtendedCrashInfoDict()
Fetch extended crash information held by the process.
uint32_t GetLastNaturalStopID() const
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)
virtual void ForceScriptedState(lldb::StateType state)
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 interr...
lldb::UnixSignalsSP m_unix_signals_sp
bool StateChangedIsHijackedForSynchronousResume()
const char * GetExitDescription()
Get a textual description of what the process exited.
void SetPublicState(lldb::StateType new_state, bool restarted)
lldb::tid_t m_interrupt_tid
void SetDataAddressMask(lldb::addr_t data_address_mask)
virtual Status DoConnectRemote(llvm::StringRef remote_url)
Attach to a remote system via a URL.
bool() PreResumeActionCallback(void *)
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.
llvm::once_flag m_dlopen_utility_func_flag_once
virtual llvm::VersionTuple GetHostOSVersion()
Sometimes the connection to a process can detect the host OS version that the process is running on.
virtual void UpdateQueueListIfNeeded()
virtual Status UpdateAutomaticSignalFiltering()
virtual lldb::addr_t GetImageInfoAddress()
Get the image information address for the current process.
std::map< lldb::addr_t, lldb::addr_t > m_resolved_indirect_addresses
This helps with the Public event coalescing in ShouldBroadcastEvent.
virtual Status DoAttachToProcessWithID(lldb::pid_t pid, const ProcessAttachInfo &attach_info)
Attach to an existing process using a process ID.
void SetCanRunCode(bool can_run_code)
Sets whether executing code in this process is possible.
Status ClearBreakpointSiteByID(lldb::user_id_t break_id)
virtual Status EnableSoftwareBreakpoint(BreakpointSite *bp_site)
void AppendSTDERR(const char *s, size_t len)
bool GetShouldDetach() const
static llvm::StringRef GetStaticBroadcasterClass()
uint32_t m_thread_index_id
Each thread is created with a 1 based index that won't get re-used.
bool ProcessIOHandlerExists() const
bool RouteAsyncStructuredData(const StructuredData::ObjectSP object_sp)
Route the incoming structured data dictionary to the right plugin.
virtual void DidDestroy()
virtual void WillPublicStop()
Called when the process is about to broadcast a public stop.
lldb::addr_t ReadPointerFromMemory(lldb::addr_t vm_addr, Status &error)
virtual void PrefetchModuleSpecs(llvm::ArrayRef< FileSpec > module_file_specs, const llvm::Triple &triple)
Broadcaster m_private_state_control_broadcaster
const std::vector< lldb::addr_t > & GetImageTokens()
Get the image vector for the current process.
lldb::addr_t GetHighmemCodeAddressMask()
The highmem masks are for targets where we may have different masks for low memory versus high memory...
bool PushProcessIOHandler()
size_t RemoveBreakpointOpcodesFromBuffer(lldb::addr_t addr, size_t size, uint8_t *buf) const
Broadcaster m_private_state_broadcaster
const Process & operator=(const Process &)=delete
virtual bool DetachRequiresHalt()
virtual bool IsAlive()
Check if a process is still alive.
bool m_destroy_in_process
ThreadList m_thread_list_real
The threads for this process as are known to the protocol we are debugging with.
ThreadSafeValue< lldb::StateType > m_public_state
lldb::addr_t m_data_address_mask
virtual ArchSpec GetSystemArchitecture()
Get the system architecture for this process.
Status DeallocateMemory(lldb::addr_t ptr)
The public interface to deallocating memory in the process.
virtual Status DisableWatchpoint(lldb::WatchpointSP wp_sp, bool notify=true)
void RegisterNotificationCallbacks(const Process::Notifications &callbacks)
Register for process and thread notifications.
virtual void DidAttach(ArchSpec &process_arch)
Called after attaching a process.
virtual lldb::addr_t ResolveIndirectFunction(const Address *address, Status &error)
Resolve dynamically loaded indirect functions.
lldb::StateType m_last_broadcast_state
LanguageRuntime * GetLanguageRuntime(lldb::LanguageType language)
ProcessModID m_mod_id
Tracks the state of the process over stops and other alterations.
virtual CommandObject * GetPluginCommandObject()
Return a multi-word command object that can be used to expose plug-in specific commands.
void SetID(lldb::pid_t new_pid)
Sets the stored pid.
virtual Status GetFileLoadAddress(const FileSpec &file, bool &is_loaded, lldb::addr_t &load_addr)
Try to find the load address of a file.
virtual JITLoaderList & GetJITLoaders()
uint32_t AssignIndexIDToThread(uint64_t thread_id)
virtual bool SetExitStatus(int exit_status, llvm::StringRef exit_string)
Set accessor for the process exit status (return code).
uint32_t m_queue_list_stop_id
The natural stop id when queue list was last fetched.
void PrintWarningOptimization(const SymbolContext &sc)
Print a user-visible warning about a module being built with optimization.
ProcessRunLock m_private_run_lock
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 std::optional< bool > DoGetWatchpointReportedAfter()
Provide an override value in the subclass for lldb's CPU-based logic for whether watchpoint exception...
static ProcessProperties & GetGlobalProperties()
lldb::addr_t m_highmem_code_address_mask
lldb::addr_t GetImagePtrFromToken(size_t token) const
int m_exit_status
The exit status of the process, or -1 if not set.
std::vector< LanguageRuntime * > GetLanguageRuntimes()
void SetShouldDetach(bool b)
virtual lldb_private::StructuredData::ObjectSP GetDynamicLoaderProcessState()
MemoryCache m_memory_cache
static void STDIOReadThreadBytesReceived(void *baton, const void *src, size_t src_len)
virtual bool GetProcessInfo(ProcessInstanceInfo &info)
virtual void DidHalt()
Called after halting a process.
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...
lldb::StateType WaitForProcessStopPrivate(lldb::EventSP &event_sp, const Timeout< std::micro > &timeout)
void RestoreProcessEvents()
Restores the process event broadcasting to its normal state.
virtual bool SupportsMemoryTagging()
Check whether the process supports memory tagging.
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.
uint32_t GetAddressByteSize() const
uint32_t GetStopID() const
void SetPrivateState(lldb::StateType state)
lldb::addr_t m_highmem_data_address_mask
virtual Status DoDestroy()=0
Status StopForDestroyOrDetach(lldb::EventSP &exit_event_sp)
virtual llvm::Error LoadModules()
Sometimes processes know how to retrieve and load shared libraries.
bool GetWatchpointReportedAfter()
Whether lldb will be notified about watchpoints after the instruction has completed executing,...
SourceManager::SourceFileCache & GetSourceFileCache()
lldb::StateType GetNextEvent(lldb::EventSP &event_sp)
virtual bool DoUpdateThreadList(ThreadList &old_thread_list, ThreadList &new_thread_list)=0
Update the thread list following process plug-in's specific logic.
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.
bool StateChangedIsExternallyHijacked()
bool RunPreResumeActions()
void SetCanInterpretFunctionCalls(bool can_interpret_function_calls)
Sets whether executing function calls using the interpreter is possible for this process.
bool PopProcessIOHandler()
virtual size_t GetSTDERR(char *buf, size_t buf_size, Status &error)
Get any available STDERR.
size_t WriteMemory(lldb::addr_t vm_addr, const void *buf, size_t size, Status &error)
Write memory to a process.
virtual llvm::Expected< bool > SaveCore(llvm::StringRef outfile)
Save core dump into the specified file.
bool ProcessIOHandlerIsActive()
Status DestroyImpl(bool force_kill)
bool m_force_next_event_delivery
lldb::SystemRuntimeUP m_system_runtime_up
virtual Status WillHalt()
Called before halting to a process.
bool ShouldBroadcastEvent(Event *event_ptr)
This is the part of the event handling that for a process event.
virtual DynamicLoader * GetDynamicLoader()
Get the dynamic loader plug-in for this process.
std::string m_exit_string
A textual description of why a process exited.
lldb::DynamicCheckerFunctionsUP m_dynamic_checkers_up
The functions used by the expression parser to validate data that expressions use.
void SyncIOHandler(uint32_t iohandler_id, const Timeout< std::micro > &timeout)
Waits for the process state to be running within a given msec timeout.
void ForceNextEventDelivery()
ThreadPlanStack * FindThreadPlans(lldb::tid_t tid)
Find the thread plan stack associated with thread with tid.
void SetSTDIOFileDescriptor(int file_descriptor)
virtual Status Attach(ProcessAttachInfo &attach_info)
Attach to an existing process using the process attach info.
virtual void Finalize(bool destructing)
This object is about to be destroyed, do any necessary cleanup.
lldb::addr_t GetDataAddressMask()
void SynchronouslyNotifyStateChanged(lldb::StateType state)
bool CanJIT()
Determines whether executing JIT-compiled code in this process is possible.
StopPointSiteList< lldb_private::WatchpointResource > & GetWatchpointResourceList()
llvm::StringRef GetBroadcasterClass() const override
This needs to be filled in if you are going to register the broadcaster with the broadcaster manager ...
virtual lldb_private::UUID FindModuleUUID(const llvm::StringRef path)
virtual Status DoAttachToProcessWithName(const char *process_name, const ProcessAttachInfo &attach_info)
Attach to an existing process using a partial process name.
ThreadList m_thread_list
The threads for this process as the user will see them.
virtual bool StartNoticingNewThreads()
Call this to set the lldb in the mode where it breaks on new thread creations, and then auto-restarts...
bool UpdateThreadList(ThreadList &old_thread_list, ThreadList &new_thread_list)
Update the thread list.
const lldb::UnixSignalsSP & GetUnixSignals()
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 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 bool IsLiveDebugSession() const
std::weak_ptr< Target > m_target_wp
The target that owns this process.
virtual void DoDidExec()
Subclasses of Process should implement this function if they need to do anything after a process exec...
virtual void RefreshStateAfterStop()=0
Currently called as part of ShouldStop.
lldb::addr_t GetCodeAddressMask()
Get the current address mask in the Process.
bool UnregisterNotificationCallbacks(const Process::Notifications &callbacks)
Unregister for process and thread notifications.
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 listen...
QueueList & GetQueueList()
virtual Status DoDeallocateMemory(lldb::addr_t ptr)
Actually deallocate memory in the process.
Status GetMemoryRegionInfo(lldb::addr_t load_addr, MemoryRegionInfo &range_info)
Locate the memory region that contains load_addr.
static void SettingsTerminate()
virtual void * GetImplementation()
lldb::addr_t GetHighmemDataAddressMask()
ThreadList m_extended_thread_list
Constituent for extended threads that may be generated, cleared on natural stops.
bool CallVoidArgVoidPtrReturn(const Address *address, lldb::addr_t &returned_func, bool trap_exceptions=false)
bool CurrentThreadIsPrivateStateThread()
void AddPreResumeAction(PreResumeActionCallback callback, void *baton)
size_t GetSoftwareBreakpointTrapOpcode(BreakpointSite *bp_site)
Status Halt(bool clear_thread_plans=false, bool use_run_lock=true)
Halts a running process.
const lldb::ABISP & GetABI()
Status WillLaunch(Module *module)
Called before launching to a process.
lldb::ModuleSP ReadModuleFromMemory(const FileSpec &file_spec, lldb::addr_t header_addr, size_t size_to_read=512)
std::vector< lldb::ThreadSP > CalculateCoreFileThreadList(const SaveCoreOptions &core_options)
Helper function for Process::SaveCore(...) that calculates the thread list based upon options set wit...
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.
uint32_t GetLastUserExpressionResumeID() const
virtual size_t GetSTDOUT(char *buf, size_t buf_size, Status &error)
Get any available STDOUT.
lldb::ThreadCollectionSP GetHistoryThreads(lldb::addr_t addr)
const ProcessModID & GetModIDRef() const
lldb::StateType GetStateChangedEvents(lldb::EventSP &event_sp, const Timeout< std::micro > &timeout, lldb::ListenerSP hijack_listener)
ThreadedCommunication m_stdio_communication
lldb::StackFrameSP CalculateStackFrame() override
static constexpr int g_all_event_bits
virtual lldb::addr_t DoAllocateMemory(size_t size, uint32_t permissions, Status &error)
Actually allocate memory in the process.
std::atomic< bool > m_finalizing
The tid of the thread that issued the async interrupt, used by thread plan timeout.
virtual llvm::Expected< std::string > TraceGetState(llvm::StringRef type)
Get the current tracing state of the process and its threads.
bool CanInterpretFunctionCalls()
Determines whether executing function calls using the interpreter is possible for this process.
std::recursive_mutex m_language_runtimes_mutex
std::string m_stderr_data
Target & GetTarget()
Get the target object pointer for this module.
virtual Status EnableWatchpoint(lldb::WatchpointSP wp_sp, bool notify=true)
QueueIterable Queues()
Iterate over the list of queues.
The SourceFileCache class separates the source manager from the cache of source files.
static Status FromErrorString(const char *str)
static Status static Status FromErrorStringWithFormatv(const char *format, Args &&...args)
A stream class that can stream formatted output to a file.
std::shared_ptr< Dictionary > DictionarySP
std::shared_ptr< Object > ObjectSP
Defines a symbol context baton that can be handed other debug core functions.
A plug-in interface definition class for system runtimes.
virtual ThreadIterable Threads()
"lldb/Core/ThreadedCommunication.h" Variation of Communication that supports threaded reads.
A plug-in interface definition class for trace information.
RAII guard that should be acquired when an utility function is called within a given process.
UtilityFunctionScope(Process *p)
"lldb/Expression/UtilityFunction.h" Encapsulates a bit of source code that provides a function that i...
#define LLDB_INVALID_ADDRESS_MASK
Address Mask Bits not used for addressing are set to 1 in the mask; all mask bits set is an invalid v...
#define LLDB_INVALID_ADDRESS
#define LLDB_INVALID_PROCESS_ID
@ DoNoSelectMostRelevantFrame
A class that represents a running process on the host machine.
std::map< lldb::InstrumentationRuntimeType, lldb::InstrumentationRuntimeSP > InstrumentationRuntimeCollection
bool operator!=(const Address &lhs, const Address &rhs)
llvm::APFloat::cmpResult compare(Scalar lhs, Scalar rhs)
bool operator==(const Address &lhs, const Address &rhs)
static uint32_t bits(const uint32_t val, const uint32_t msbit, const uint32_t lsbit)
std::shared_ptr< lldb_private::ThreadPlan > ThreadPlanSP
std::shared_ptr< lldb_private::ABI > ABISP
std::shared_ptr< lldb_private::StackFrame > StackFrameSP
std::unique_ptr< lldb_private::SystemRuntime > SystemRuntimeUP
std::shared_ptr< lldb_private::BreakpointSite > BreakpointSiteSP
std::shared_ptr< lldb_private::BreakpointLocation > BreakpointLocationSP
DescriptionLevel
Description levels for "void GetDescription(Stream *, DescriptionLevel)" calls.
std::shared_ptr< lldb_private::IOHandler > IOHandlerSP
std::unique_ptr< lldb_private::OperatingSystem > OperatingSystemUP
std::shared_ptr< lldb_private::Thread > ThreadSP
std::shared_ptr< lldb_private::UnixSignals > UnixSignalsSP
std::unique_ptr< lldb_private::DynamicCheckerFunctions > DynamicCheckerFunctionsUP
StateType
Process and Thread States.
@ eStateDetached
Process has been detached and can't be examined.
@ eStateExited
Process has exited and can't be examined.
LanguageType
Programming language type.
ExpressionResults
The results of expression evaluation.
std::shared_ptr< lldb_private::StructuredDataPlugin > StructuredDataPluginSP
std::shared_ptr< lldb_private::Process > ProcessSP
InstrumentationRuntimeType
std::shared_ptr< lldb_private::Event > EventSP
std::unique_ptr< lldb_private::DynamicLoader > DynamicLoaderUP
std::unique_ptr< lldb_private::JITLoaderList > JITLoaderListUP
ByteOrder
Byte ordering definitions.
std::shared_ptr< lldb_private::Watchpoint > WatchpointSP
std::weak_ptr< lldb_private::Process > ProcessWP
std::shared_ptr< lldb_private::Listener > ListenerSP
std::shared_ptr< lldb_private::Target > TargetSP
std::shared_ptr< lldb_private::InstrumentationRuntime > InstrumentationRuntimeSP
std::shared_ptr< lldb_private::Module > ModuleSP
std::shared_ptr< lldb_private::ThreadCollection > ThreadCollectionSP
A notification structure that can be used by clients to listen for changes in a process's lifetime.
bool operator==(const PreResumeCallbackAndBaton &rhs)
PreResumeCallbackAndBaton(PreResumeActionCallback in_callback, void *in_baton)
jLLDBTraceGetBinaryData gdb-remote packet
jLLDBTraceStop gdb-remote packet