LLDB mainline
|
#include <ProcessWindows.h>
Classes | |
struct | WatchpointInfo |
Public Member Functions | |
~ProcessWindows () | |
size_t | GetSTDOUT (char *buf, size_t buf_size, Status &error) override |
Get any available STDOUT. | |
size_t | GetSTDERR (char *buf, size_t buf_size, Status &error) override |
Get any available STDERR. | |
size_t | PutSTDIN (const char *buf, size_t buf_size, Status &error) override |
Puts data into this process's STDIN. | |
llvm::StringRef | GetPluginName () override |
Status | EnableBreakpointSite (BreakpointSite *bp_site) override |
Status | DisableBreakpointSite (BreakpointSite *bp_site) override |
Status | DoDetach (bool keep_stopped) override |
Detaches from a running or stopped process. | |
Status | DoLaunch (Module *exe_module, ProcessLaunchInfo &launch_info) override |
Launch a new process. | |
Status | DoAttachToProcessWithID (lldb::pid_t pid, const lldb_private::ProcessAttachInfo &attach_info) override |
Attach to an existing process using a process ID. | |
Status | DoResume () override |
Resumes all of a process's threads as configured using the Thread run control functions. | |
Status | DoDestroy () override |
Status | DoHalt (bool &caused_stop) override |
Halts a running process. | |
void | DidLaunch () override |
Called after launching a process. | |
void | DidAttach (lldb_private::ArchSpec &arch_spec) override |
Called after attaching a process. | |
void | RefreshStateAfterStop () override |
Currently called as part of ShouldStop. | |
bool | CanDebug (lldb::TargetSP target_sp, bool plugin_specified_by_name) override |
Check if a plug-in instance can debug the file in module. | |
bool | DestroyRequiresHalt () override |
bool | DoUpdateThreadList (ThreadList &old_thread_list, ThreadList &new_thread_list) override |
Update the thread list following process plug-in's specific logic. | |
bool | IsAlive () override |
Check if a process is still alive. | |
ArchSpec | GetSystemArchitecture () override |
Get the system architecture for this process. | |
size_t | DoReadMemory (lldb::addr_t vm_addr, void *buf, size_t size, Status &error) override |
Actually do the reading of memory from a process. | |
size_t | DoWriteMemory (lldb::addr_t vm_addr, const void *buf, size_t size, Status &error) override |
Actually do the writing of memory to a process. | |
lldb::addr_t | DoAllocateMemory (size_t size, uint32_t permissions, Status &error) override |
Actually allocate memory in the process. | |
Status | DoDeallocateMemory (lldb::addr_t ptr) override |
Actually deallocate memory in the process. | |
lldb::addr_t | GetImageInfoAddress () override |
Get the image information address for the current process. | |
DynamicLoaderWindowsDYLD * | GetDynamicLoader () override |
Get the dynamic loader plug-in for this process. | |
void | OnExitProcess (uint32_t exit_code) override |
void | OnDebuggerConnected (lldb::addr_t image_base) override |
ExceptionResult | OnDebugException (bool first_chance, const ExceptionRecord &record) override |
void | OnCreateThread (const HostThread &thread) override |
void | OnExitThread (lldb::tid_t thread_id, uint32_t exit_code) override |
void | OnLoadDll (const ModuleSpec &module_spec, lldb::addr_t module_addr) override |
void | OnUnloadDll (lldb::addr_t module_addr) override |
void | OnDebugString (const std::string &string) override |
void | OnDebuggerError (const Status &error, uint32_t type) override |
std::optional< uint32_t > | GetWatchpointSlotCount () override |
Get the number of watchpoints supported by this target. | |
Status | EnableWatchpoint (Watchpoint *wp, bool notify=true) override |
Status | DisableWatchpoint (Watchpoint *wp, bool notify=true) override |
![]() | |
ConstString & | 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 () |
This object is about to be destroyed, do any necessary cleanup. | |
bool | IsValid () const |
Return whether this object is valid (i.e. | |
virtual CommandObject * | GetPluginCommandObject () |
Return a multi-word command object that can be used to expose plug-in specific commands. | |
virtual Status | Launch (ProcessLaunchInfo &launch_info) |
Launch a new process. | |
virtual Status | LoadCore () |
virtual Status | DoLoadCore () |
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 DynamicLoader * | GetDynamicLoader () |
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< LoadedModuleInfoList > | GetLoadedModuleList () |
Query remote GDBServer for a detailed loaded library list. | |
virtual llvm::Expected< bool > | SaveCore (llvm::StringRef outfile) |
Save core dump into the specified file. | |
virtual ArchSpec | GetSystemArchitecture () |
Get the system architecture for this process. | |
virtual SystemRuntime * | GetSystemRuntime () |
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) |
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::UnixSignalsSP & | GetUnixSignals () |
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 Status | DoResume () |
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 () |
Target & | GetTarget () |
Get the target object pointer for this module. | |
const Target & | GetTarget () 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 () |
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) |
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 () |
lldb::addr_t | GetDataAddressMask () |
void | SetCodeAddressMask (lldb::addr_t code_address_mask) |
void | SetDataAddressMask (lldb::addr_t data_address_mask) |
ProcessModID | GetModID () const |
Get the Modification ID of the process. | |
const ProcessModID & | GetModIDRef () 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, const char *cstr) |
Set accessor for the process exit status (return code). | |
virtual bool | IsAlive () |
Check if a process is still alive. | |
virtual bool | IsLiveDebugSession () const |
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. | |
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 ®ion_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) |
BreakpointSiteList & | GetBreakpointSiteList () |
const BreakpointSiteList & | 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 | RemoveOwnerFromBreakpointSite (lldb::user_id_t owner_id, lldb::user_id_t owner_loc_id, lldb::BreakpointSiteSP &bp_site_sp) |
virtual Status | EnableWatchpoint (Watchpoint *wp, bool notify=true) |
virtual Status | DisableWatchpoint (Watchpoint *wp, bool notify=true) |
bool | UpdateThreadList (ThreadList &old_thread_list, ThreadList &new_thread_list) |
Update the thread list. | |
void | UpdateThreadListIfNeeded () |
ThreadList & | GetThreadList () |
ThreadList & | GetExtendedThreadList () |
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 () |
QueueList & | GetQueueList () |
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) |
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) |
Event * | PeekAtStateChangedEvents () |
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::ABISP & | GetABI () |
OperatingSystem * | GetOperatingSystem () |
std::vector< LanguageRuntime * > | GetLanguageRuntimes () |
LanguageRuntime * | GetLanguageRuntime (lldb::LanguageType language) |
bool | IsPossibleDynamicValue (ValueObject &in_value) |
bool | IsRunning () const |
DynamicCheckerFunctions * | GetDynamicCheckers () |
void | SetDynamicCheckers (DynamicCheckerFunctions *dynamic_checkers) |
bool | PruneThreadPlansForTID (lldb::tid_t tid) |
Prune ThreadPlanStacks for unreported threads. | |
void | PruneThreadPlans () |
Prune ThreadPlanStacks for all unreported threads. | |
ThreadPlanStack * | FindThreadPlans (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 ®ion) |
bool | RemoveInvalidMemoryRange (const LoadRange ®ion) |
void | AddPreResumeAction (PreResumeActionCallback callback, void *baton) |
bool | RunPreResumeActions () |
void | ClearPreResumeActions () |
void | ClearPreResumeAction (PreResumeActionCallback callback, void *baton) |
ProcessRunLock & | GetRunLock () |
bool | CurrentThreadIsPrivateStateThread () |
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. | |
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 (ConstString 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 (ConstString type_name) const |
Returns the StructuredDataPlugin associated with a given type name, if there is one. | |
virtual void * | GetImplementation () |
![]() | |
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) |
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) |
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 |
![]() | |
Properties ()=default | |
Properties (const lldb::OptionValuePropertiesSP &collection_sp) | |
virtual | ~Properties ()=default |
virtual lldb::OptionValuePropertiesSP | GetValueProperties () const |
virtual lldb::OptionValueSP | GetPropertyValue (const ExecutionContext *exe_ctx, llvm::StringRef property_path, bool will_modify, 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 |
lldb::OptionValuePropertiesSP | GetSubProperty (const ExecutionContext *exe_ctx, ConstString name) |
![]() | |
Broadcaster (lldb::BroadcasterManagerSP manager_sp, const char *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, EventData *event_data=nullptr) |
void | BroadcastEventIfUnique (uint32_t event_type, EventData *event_data=nullptr) |
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. | |
ConstString | GetBroadcasterName () |
Get the NULL terminated C string name of this Broadcaster object. | |
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. | |
virtual ConstString & | GetBroadcasterClass () const |
This needs to be filled in if you are going to register the broadcaster with the broadcaster manager and do broadcaster class matching. | |
lldb::BroadcasterManagerSP | GetManager () |
![]() | |
virtual | ~ExecutionContextScope ()=default |
virtual lldb::TargetSP | CalculateTarget ()=0 |
virtual lldb::ProcessSP | CalculateProcess ()=0 |
virtual lldb::ThreadSP | CalculateThread ()=0 |
virtual lldb::StackFrameSP | CalculateStackFrame ()=0 |
virtual void | CalculateExecutionContext (ExecutionContext &exe_ctx)=0 |
Reconstruct the object's execution context into sc. | |
![]() | |
PluginInterface ()=default | |
virtual | ~PluginInterface ()=default |
virtual llvm::StringRef | GetPluginName ()=0 |
PluginInterface (const PluginInterface &)=delete | |
PluginInterface & | operator= (const PluginInterface &)=delete |
![]() | |
virtual | ~ProcessDebugger () |
virtual void | OnExitProcess (uint32_t exit_code) |
virtual void | OnDebuggerConnected (lldb::addr_t image_base) |
virtual ExceptionResult | OnDebugException (bool first_chance, const ExceptionRecord &record) |
virtual void | OnCreateThread (const HostThread &thread) |
virtual void | OnExitThread (lldb::tid_t thread_id, uint32_t exit_code) |
virtual void | OnLoadDll (const ModuleSpec &module_spec, lldb::addr_t module_addr) |
virtual void | OnUnloadDll (lldb::addr_t module_addr) |
virtual void | OnDebugString (const std::string &string) |
virtual void | OnDebuggerError (const Status &error, uint32_t type) |
Static Public Member Functions | |
static lldb::ProcessSP | CreateInstance (lldb::TargetSP target_sp, lldb::ListenerSP listener_sp, const FileSpec *, bool can_connect) |
static void | Initialize () |
static void | Terminate () |
static llvm::StringRef | GetPluginNameStatic () |
static llvm::StringRef | GetPluginDescriptionStatic () |
![]() | |
static ConstString & | GetStaticBroadcasterClass () |
static void | SettingsInitialize () |
static void | SettingsTerminate () |
static ProcessProperties & | GetGlobalProperties () |
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 const char * | ExecutionResultAsCString (lldb::ExpressionResults result) |
static bool | HandleProcessStateChangedEvent (const lldb::EventSP &event_sp, Stream *stream, bool &pop_process_io_handler) |
Centralize the code that handles and prints descriptions for process state changes. | |
![]() | |
static const char * | GetExperimentalSettingsName () |
static bool | IsSettingExperimental (llvm::StringRef setting) |
Protected Member Functions | |
ProcessWindows (lldb::TargetSP target_sp, lldb::ListenerSP listener_sp) | |
Status | DoGetMemoryRegionInfo (lldb::addr_t vm_addr, MemoryRegionInfo &info) override |
DoGetMemoryRegionInfo is called by GetMemoryRegionInfo after it has removed non address bits from load_addr. | |
![]() | |
virtual JITLoaderList & | GetJITLoaders () |
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< TraceSupportedResponse > | TraceSupported () |
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 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< bool > | DoGetWatchpointReportedAfter () |
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. | |
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) |
![]() | |
BroadcasterImplSP | GetBroadcasterImpl () |
const char * | GetHijackingListenerName () |
![]() | |
Status | DetachProcess () |
Status | LaunchProcess (ProcessLaunchInfo &launch_info, DebugDelegateSP delegate) |
Status | AttachProcess (lldb::pid_t pid, const ProcessAttachInfo &attach_info, DebugDelegateSP delegate) |
Status | DestroyProcess (lldb::StateType process_state) |
Status | HaltProcess (bool &caused_stop) |
Status | GetMemoryRegionInfo (lldb::addr_t load_addr, MemoryRegionInfo &range_info) |
Status | ReadMemory (lldb::addr_t addr, void *buf, size_t size, size_t &bytes_read) |
Status | WriteMemory (lldb::addr_t addr, const void *buf, size_t size, size_t &bytes_written) |
Status | AllocateMemory (size_t size, uint32_t permissions, lldb::addr_t &addr) |
Status | DeallocateMemory (lldb::addr_t addr) |
lldb::pid_t | GetDebuggedProcessId () const |
Status | WaitForDebuggerConnection (DebuggerThreadSP debugger, HostProcess &process) |
Private Attributes | |
std::map< lldb::break_id_t, WatchpointInfo > | m_watchpoints |
std::vector< lldb::break_id_t > | m_watchpoint_ids |
Additional Inherited Members | |
![]() | |
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_t > | LoadRange |
typedef ProcessRunLock::ProcessRunLocker | StopLocker |
typedef bool() | PreResumeActionCallback(void *) |
![]() | |
enum | { eCanJITDontKnow = 0 , eCanJITYes , eCanJITNo } |
typedef std::map< lldb::LanguageType, lldb::LanguageRuntimeSP > | LanguageRuntimeCollection |
using | StructuredDataPluginMap = std::map< ConstString, lldb::StructuredDataPluginSP > |
![]() | |
typedef std::shared_ptr< BroadcasterImpl > | BroadcasterImplSP |
typedef std::weak_ptr< BroadcasterImpl > | BroadcasterImplWP |
![]() | |
static void | STDIOReadThreadBytesReceived (void *baton, const void *src, size_t src_len) |
![]() | |
std::weak_ptr< Target > | m_target_wp |
The target that owns this process. | |
lldb::pid_t | m_pid = LLDB_INVALID_PROCESS_ID |
ThreadSafeValue< lldb::StateType > | m_public_state |
ThreadSafeValue< lldb::StateType > | m_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 |
Owner for extended threads that may be generated, cleared on natural stops. | |
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. | |
std::vector< Notifications > | m_notifications |
The list of notifications that this process can deliver. | |
std::vector< lldb::addr_t > | m_image_tokens |
lldb::ListenerSP | m_listener_sp |
Shared pointer to the listener used for public events. | |
BreakpointSiteList | m_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 |
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< NextEventAction > | m_next_event_action_up |
std::vector< PreResumeCallbackAndBaton > | m_pre_resume_actions |
ProcessRunLock | m_public_run_lock |
ProcessRunLock | m_private_run_lock |
bool | m_currently_handling_do_on_removals |
bool | m_resume_requested |
std::atomic< bool > | m_finalizing |
This is set at the beginning of Process::Finalize() to stop functions from looking up or creating things during or after a finalize call. | |
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_t > | m_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 |
StructuredDataPluginMap | m_structured_data_plugin_map |
enum lldb_private::Process:: { ... } | m_can_jit |
std::unique_ptr< UtilityFunction > | m_dlopen_utility_func_up |
llvm::once_flag | m_dlopen_utility_func_flag_once |
lldb::addr_t | m_code_address_mask = 0 |
Mask for code an data addresses. | |
lldb::addr_t | m_data_address_mask = 0 |
![]() | |
Process * | m_process |
std::unique_ptr< ProcessExperimentalProperties > | m_experimental_properties_up |
![]() | |
lldb::OptionValuePropertiesSP | m_collection_sp |
![]() | |
llvm::sys::Mutex | m_mutex |
std::unique_ptr< ProcessWindowsData > | m_session_data |
Definition at line 23 of file ProcessWindows.h.
lldb_private::ProcessWindows::~ProcessWindows | ( | ) |
Definition at line 123 of file ProcessWindows.cpp.
|
protected |
Definition at line 116 of file ProcessWindows.cpp.
|
overridevirtual |
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.
Implements lldb_private::Process.
Definition at line 508 of file ProcessWindows.cpp.
References lldb_private::FileSystem::Exists(), and lldb_private::FileSystem::Instance().
|
static |
Definition at line 81 of file ProcessWindows.cpp.
Referenced by Initialize().
|
inlineoverridevirtual |
Reimplemented from lldb_private::Process.
Definition at line 66 of file ProcessWindows.h.
|
overridevirtual |
Called after attaching a process.
[in] | process_arch | If 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 from lldb_private::Process.
Definition at line 274 of file ProcessWindows.cpp.
References lldb::eStateStopped, lldb_private::Process::GetPrivateState(), lldb_private::ProcessDebugger::m_mutex, lldb_private::ProcessDebugger::m_session_data, and RefreshStateAfterStop().
Referenced by DidLaunch().
|
overridevirtual |
Called after launching a process.
Allow Process plug-ins to execute some code after launching a process.
Reimplemented from lldb_private::Process.
Definition at line 269 of file ProcessWindows.cpp.
References DidAttach().
|
overridevirtual |
Reimplemented from lldb_private::Process.
Definition at line 155 of file ProcessWindows.cpp.
References lldb_private::Breakpoints, lldb_private::Process::DisableSoftwareBreakpoint(), error(), lldb_private::StoppointSite::GetID(), lldb_private::StoppointSite::GetLoadAddress(), lldb_private::GetLog(), and LLDB_LOG.
|
overridevirtual |
Reimplemented from lldb_private::Process.
Definition at line 896 of file ProcessWindows.cpp.
References error(), lldb_private::StoppointSite::GetID(), lldb_private::UserID::GetID(), lldb_private::Thread::GetRegisterContext(), lldb_private::ThreadList::GetSize(), lldb_private::ThreadList::GetThreadAtIndex(), lldb_private::Watchpoint::IsEnabled(), LLDB_INVALID_BREAK_ID, lldb_private::Process::m_thread_list, m_watchpoint_ids, m_watchpoints, and lldb_private::Watchpoint::SetEnabled().
|
overridevirtual |
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.
[in] | size | The size of the allocation requested. |
Reimplemented from lldb_private::Process.
Definition at line 598 of file ProcessWindows.cpp.
References lldb_private::ProcessDebugger::AllocateMemory(), error(), and LLDB_INVALID_ADDRESS.
|
overridevirtual |
Attach to an existing process using a process ID.
[in] | pid | The process ID that we should attempt to attach to. |
[in] | attach_info | Information on how to do the attach. For example, GetUserID() will return the uid to attach as. |
Reimplemented from lldb_private::Process.
Definition at line 197 of file ProcessWindows.cpp.
References lldb_private::ProcessDebugger::AttachProcess(), error(), lldb_private::ProcessDebugger::GetDebuggedProcessId(), and lldb_private::Process::SetID().
|
overridevirtual |
Actually deallocate memory in the process.
This function will deallocate memory in the process's address space that was allocated with AllocateMemory.
[in] | ptr | A return value from AllocateMemory, pointing to the memory you want to deallocate. |
Reimplemented from lldb_private::Process.
Definition at line 605 of file ProcessWindows.cpp.
References lldb_private::ProcessDebugger::DeallocateMemory().
|
overridevirtual |
Implements lldb_private::Process.
Definition at line 256 of file ProcessWindows.cpp.
References lldb_private::ProcessDebugger::DestroyProcess(), and lldb_private::Process::GetPrivateState().
|
overridevirtual |
Detaches from a running or stopped process.
Reimplemented from lldb_private::Process.
Definition at line 167 of file ProcessWindows.cpp.
References lldb_private::ProcessDebugger::DetachProcess(), error(), lldb::eStateDetached, lldb::eStateExited, lldb_private::Process::GetID(), lldb_private::GetLog(), lldb_private::Process::GetPrivateState(), LLDB_LOG, lldb_private::Process, and lldb_private::Process::SetPrivateState().
|
overrideprotectedvirtual |
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.
[in] | load_addr | The load address to query the range_info for. (non address bits removed) |
[out] | range_info | An range_info value containing the details of the range. |
Reimplemented from lldb_private::Process.
Definition at line 609 of file ProcessWindows.cpp.
References lldb_private::ProcessDebugger::GetMemoryRegionInfo().
|
overridevirtual |
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.
[out] | caused_stop | If true, then this Halt caused the stop, otherwise, the process was already stopped. |
Reimplemented from lldb_private::Process.
Definition at line 261 of file ProcessWindows.cpp.
References lldb::eStateStopped, lldb_private::Process::GetPrivateState(), and lldb_private::ProcessDebugger::HaltProcess().
|
overridevirtual |
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.
[in] | exe_module | The module from which to extract the file specification and launch. |
[in] | launch_info | Details (e.g. arguments, stdio redirection, etc.) for the requested launch. |
Reimplemented from lldb_private::Process.
Definition at line 186 of file ProcessWindows.cpp.
References error(), lldb_private::ProcessInfo::GetProcessID(), lldb_private::ProcessDebugger::LaunchProcess(), and lldb_private::Process::SetID().
|
overridevirtual |
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.
[in] | vm_addr | A virtual load address that indicates where to start reading memory from. |
[in] | size | The number of bytes to read. |
[out] | buf | A byte buffer that is at least size bytes long that will receive the memory bytes. |
[out] | error | An 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. |
Implements lldb_private::Process.
Definition at line 584 of file ProcessWindows.cpp.
References error(), and lldb_private::ProcessDebugger::ReadMemory().
|
overridevirtual |
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.
Reimplemented from lldb_private::Process.
Definition at line 206 of file ProcessWindows.cpp.
References error(), lldb::eStateCrashed, lldb::eStateRunning, lldb::eStateStopped, lldb_private::Status::Fail(), lldb_private::GetLog(), lldb_private::Process::GetPrivateState(), lldb_private::ThreadList::GetSize(), lldb_private::ThreadList::GetThreadAtIndex(), LLDB_LOG, lldb_private::ProcessDebugger::m_mutex, lldb_private::ProcessDebugger::m_session_data, lldb_private::Process::m_thread_list, lldb_private::Process, and lldb_private::Process::SetPrivateState().
|
overridevirtual |
Update the thread list following process plug-in's specific logic.
This method should only be invoked by UpdateThreadList.
Implements lldb_private::Process.
Definition at line 522 of file ProcessWindows.cpp.
References lldb_private::ThreadCollection::AddThread(), lldb_private::GetLog(), LLDB_LOG, LLDB_LOGV, lldb_private::ProcessDebugger::m_session_data, lldb_private::Thread, and lldb_private::ThreadCollection::Threads().
|
overridevirtual |
Actually do the writing of memory to a process.
[in] | vm_addr | A virtual load address that indicates where to start writing memory to. |
[in] | buf | A byte buffer that is at least size bytes long that contains the data to write. |
[in] | size | The number of bytes to write. |
[out] | error | An error value in case the memory write fails. |
Reimplemented from lldb_private::Process.
Definition at line 591 of file ProcessWindows.cpp.
References error(), and lldb_private::ProcessDebugger::WriteMemory().
|
overridevirtual |
Reimplemented from lldb_private::Process.
Definition at line 141 of file ProcessWindows.cpp.
References lldb_private::Breakpoints, lldb_private::Process::EnableSoftwareBreakpoint(), error(), lldb_private::StoppointSite::GetID(), lldb_private::StoppointSite::GetLoadAddress(), lldb_private::GetLog(), lldb_private::StoppointSite::HardwareRequired(), and LLDB_LOG.
|
overridevirtual |
Reimplemented from lldb_private::Process.
Definition at line 842 of file ProcessWindows.cpp.
References lldb_private::ProcessWindows::WatchpointInfo::address, error(), lldb_private::StoppointSite::GetByteSize(), lldb_private::StoppointSite::GetID(), lldb_private::UserID::GetID(), lldb_private::StoppointSite::GetLoadAddress(), lldb_private::RegisterContextWindows::GetNumHardwareBreakpointSlots(), lldb_private::Thread::GetRegisterContext(), lldb_private::ThreadList::GetSize(), lldb_private::ThreadList::GetThreadAtIndex(), lldb_private::Watchpoint::IsEnabled(), LLDB_INVALID_BREAK_ID, lldb_private::Process::m_thread_list, m_watchpoint_ids, m_watchpoints, lldb_private::ProcessWindows::WatchpointInfo::read, lldb_private::RegisterContextWindows::RemoveHardwareBreakpoint(), lldb_private::Watchpoint::SetEnabled(), lldb_private::ProcessWindows::WatchpointInfo::size, lldb_private::ProcessWindows::WatchpointInfo::slot_id, lldb_private::Watchpoint::WatchpointRead(), lldb_private::Watchpoint::WatchpointWrite(), and lldb_private::ProcessWindows::WatchpointInfo::write.
|
overridevirtual |
Get the dynamic loader plug-in for this process.
The default action is to let the DynamicLoader plug-ins check the main executable and the DynamicLoader will select itself automatically. Subclasses can override this if inspecting the executable is not desired, or if Process subclasses can only use a specific DynamicLoader plug-in.
Reimplemented from lldb_private::Process.
Definition at line 624 of file ProcessWindows.cpp.
References lldb_private::DynamicLoader::FindPlugin(), lldb_private::DynamicLoaderWindowsDYLD::GetPluginNameStatic(), and lldb_private::Process::m_dyld_up.
Referenced by OnDebuggerConnected(), OnLoadDll(), and OnUnloadDll().
|
overridevirtual |
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.
Reimplemented from lldb_private::Process.
Definition at line 614 of file ProcessWindows.cpp.
References lldb_private::Target::GetExecutableModule(), lldb_private::ObjectFile::GetImageInfoAddress(), lldb_private::Address::GetLoadAddress(), lldb_private::Process::GetTarget(), lldb_private::Address::IsValid(), and LLDB_INVALID_ADDRESS.
|
static |
Definition at line 110 of file ProcessWindows.cpp.
Referenced by Initialize().
|
inlineoverridevirtual |
Implements lldb_private::PluginInterface.
Definition at line 45 of file ProcessWindows.h.
References GetPluginNameStatic().
|
inlinestatic |
Definition at line 35 of file ProcessWindows.h.
Referenced by GetPluginName(), and Initialize().
|
overridevirtual |
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.
[in] | buf | A buffer that will receive any STDERR bytes that are currently available. |
[out] | buf_size | The size in bytes for the buffer buf. |
Reimplemented from lldb_private::Process.
Definition at line 130 of file ProcessWindows.cpp.
References error().
|
overridevirtual |
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.
[out] | buf | A buffer that will receive any STDOUT bytes that are currently available. |
[in] | buf_size | The size in bytes for the buffer buf. |
Reimplemented from lldb_private::Process.
Definition at line 125 of file ProcessWindows.cpp.
References error().
|
overridevirtual |
Get the system architecture for this process.
Reimplemented from lldb_private::Process.
Definition at line 580 of file ProcessWindows.cpp.
|
overridevirtual |
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.
Reimplemented from lldb_private::Process.
Definition at line 838 of file ProcessWindows.cpp.
References lldb_private::RegisterContextWindows::GetNumHardwareBreakpointSlots().
|
static |
Definition at line 96 of file ProcessWindows.cpp.
References CreateInstance(), GetPluginDescriptionStatic(), GetPluginNameStatic(), lldb_private::PluginManager::RegisterPlugin(), and lldb_private::ShouldUseLLDBServer().
|
overridevirtual |
Check if a process is still alive.
Reimplemented from lldb_private::Process.
Definition at line 566 of file ProcessWindows.cpp.
References lldb::eStateCrashed, lldb::eStateDetached, lldb::eStateExited, lldb::eStateInvalid, lldb::eStateUnloaded, and lldb_private::Process::GetPrivateState().
|
overridevirtual |
Reimplemented from lldb_private::ProcessDebugger.
Definition at line 762 of file ProcessWindows.cpp.
References lldb_private::RegisterContextWindows::AddHardwareBreakpoint(), lldb_private::HostThread::GetNativeThread(), lldb_private::ProcessDebugger::m_mutex, lldb_private::ProcessDebugger::m_session_data, and m_watchpoints.
|
overridevirtual |
Reimplemented from lldb_private::ProcessDebugger.
Definition at line 696 of file ProcessWindows.cpp.
References lldb::eStateStopped, lldb_private::Exception, lldb_private::ExceptionRecord::GetExceptionAddress(), lldb_private::ExceptionRecord::GetExceptionCode(), lldb_private::GetLog(), LLDB_LOG, lldb_private::ProcessDebugger::m_mutex, lldb_private::ProcessDebugger::m_session_data, and lldb_private::Process::SetPrivateState().
|
overridevirtual |
Reimplemented from lldb_private::ProcessDebugger.
Definition at line 650 of file ProcessWindows.cpp.
References lldb_private::eLoadDependentsNo, error(), GetDynamicLoader(), lldb_private::GetLog(), lldb_private::HostThread::GetNativeThread(), lldb_private::Target::GetOrCreateModule(), lldb_private::Process::GetTarget(), lldb_private::FileSystem::Instance(), LLDB_LOG, lldb_private::ProcessDebugger::m_mutex, lldb_private::ProcessDebugger::m_session_data, lldb_private::Process, lldb_private::FileSystem::Resolve(), and lldb_private::Target::SetExecutableModule().
|
overridevirtual |
Reimplemented from lldb_private::ProcessDebugger.
Definition at line 813 of file ProcessWindows.cpp.
References error(), lldb_private::GetLog(), LLDB_LOG, lldb_private::ProcessDebugger::m_mutex, lldb_private::ProcessDebugger::m_session_data, and lldb_private::Process.
|
overridevirtual |
Reimplemented from lldb_private::ProcessDebugger.
Definition at line 811 of file ProcessWindows.cpp.
|
overridevirtual |
Reimplemented from lldb_private::ProcessDebugger.
Definition at line 631 of file ProcessWindows.cpp.
References lldb_private::ModuleList::Append(), lldb_private::Process::CalculateTarget(), lldb::eStateExited, lldb_private::Process::GetID(), lldb_private::GetLog(), LLDB_LOG, lldb_private::ProcessDebugger::OnExitProcess(), lldb_private::Process, lldb_private::Process::SetPrivateState(), and lldb_private::Process::SetProcessExitStatus().
|
overridevirtual |
Reimplemented from lldb_private::ProcessDebugger.
Definition at line 782 of file ProcessWindows.cpp.
References lldb_private::ProcessDebugger::m_mutex, and lldb_private::ProcessDebugger::m_session_data.
|
overridevirtual |
Reimplemented from lldb_private::ProcessDebugger.
Definition at line 800 of file ProcessWindows.cpp.
References GetDynamicLoader().
|
overridevirtual |
Reimplemented from lldb_private::ProcessDebugger.
Definition at line 806 of file ProcessWindows.cpp.
References GetDynamicLoader().
|
overridevirtual |
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.
[in] | buf | A buffer that contains the data to write to the process's STDIN. |
[in] | buf_size | The size in bytes for the buffer buf. |
Reimplemented from lldb_private::Process.
Definition at line 135 of file ProcessWindows.cpp.
References error().
|
overridevirtual |
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.
Implements lldb_private::Process.
Definition at line 352 of file ProcessWindows.cpp.
References lldb_private::StopInfo::CreateStopReasonToTrace(), lldb_private::StopInfo::CreateStopReasonWithBreakpointSiteID(), lldb_private::StopInfo::CreateStopReasonWithException(), lldb_private::StopInfo::CreateStopReasonWithWatchpointID(), lldb_private::DumpAdditionalExceptionInformation(), lldb_private::Exception, lldb_private::Process::GetBreakpointSiteList(), lldb_private::GetLog(), lldb_private::ThreadList::GetSelectedThread(), lldb_private::Process::GetTarget(), LLDB_INVALID_INDEX32, LLDB_LOG, lldb_private::ProcessDebugger::m_mutex, lldb_private::ProcessDebugger::m_session_data, lldb_private::Process::m_thread_list, m_watchpoint_ids, m_watchpoints, pc, lldb_private::ThreadList::RefreshStateAfterStop(), and lldb_private::ThreadList::SetSelectedThreadByID().
Referenced by DidAttach().
|
static |
Definition at line 108 of file ProcessWindows.cpp.
|
private |
Definition at line 117 of file ProcessWindows.h.
Referenced by DisableWatchpoint(), EnableWatchpoint(), and RefreshStateAfterStop().
|
private |
Definition at line 116 of file ProcessWindows.h.
Referenced by DisableWatchpoint(), EnableWatchpoint(), OnCreateThread(), and RefreshStateAfterStop().