LLDB mainline
ProcessWindows.h
Go to the documentation of this file.
1//===-- ProcessWindows.h ----------------------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef liblldb_Plugins_Process_Windows_Common_ProcessWindows_H_
10#define liblldb_Plugins_Process_Windows_Common_ProcessWindows_H_
11
12#include "lldb/Target/Process.h"
13#include "lldb/Utility/Status.h"
14#include "lldb/lldb-forward.h"
15
17#include "ProcessDebugger.h"
18
19namespace lldb_private {
20
21class HostProcess;
22
23class ProcessWindows : public Process, public ProcessDebugger {
24public:
25 // Static functions.
27 lldb::ListenerSP listener_sp,
28 const FileSpec *,
29 bool can_connect);
30
31 static void Initialize();
32
33 static void Terminate();
34
35 static llvm::StringRef GetPluginNameStatic() { return "windows"; }
36
37 static llvm::StringRef GetPluginDescriptionStatic();
38
40
41 size_t GetSTDOUT(char *buf, size_t buf_size, Status &error) override;
42 size_t GetSTDERR(char *buf, size_t buf_size, Status &error) override;
43 size_t PutSTDIN(const char *buf, size_t buf_size, Status &error) override;
44
45 llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
46
49
50 Status DoDetach(bool keep_stopped) override;
51 Status DoLaunch(Module *exe_module, ProcessLaunchInfo &launch_info) override;
53 lldb::pid_t pid,
54 const lldb_private::ProcessAttachInfo &attach_info) override;
55 Status DoResume() override;
56 Status DoDestroy() override;
57 Status DoHalt(bool &caused_stop) override;
58
59 void DidLaunch() override;
60 void DidAttach(lldb_private::ArchSpec &arch_spec) override;
61
62 void RefreshStateAfterStop() override;
63
64 bool CanDebug(lldb::TargetSP target_sp,
65 bool plugin_specified_by_name) override;
66 bool DestroyRequiresHalt() override { return false; }
67 bool DoUpdateThreadList(ThreadList &old_thread_list,
68 ThreadList &new_thread_list) override;
69 bool IsAlive() override;
70
72
73 size_t DoReadMemory(lldb::addr_t vm_addr, void *buf, size_t size,
74 Status &error) override;
75 size_t DoWriteMemory(lldb::addr_t vm_addr, const void *buf, size_t size,
76 Status &error) override;
77 lldb::addr_t DoAllocateMemory(size_t size, uint32_t permissions,
78 Status &error) override;
80
82
84
85 // IDebugDelegate overrides.
86 void OnExitProcess(uint32_t exit_code) override;
87 void OnDebuggerConnected(lldb::addr_t image_base) override;
88 ExceptionResult OnDebugException(bool first_chance,
89 const ExceptionRecord &record) override;
90 void OnCreateThread(const HostThread &thread) override;
91 void OnExitThread(lldb::tid_t thread_id, uint32_t exit_code) override;
92 void OnLoadDll(const ModuleSpec &module_spec,
93 lldb::addr_t module_addr) override;
94 void OnUnloadDll(lldb::addr_t module_addr) override;
95 void OnDebugString(const std::string &string) override;
96 void OnDebuggerError(const Status &error, uint32_t type) override;
97
98 std::optional<uint32_t> GetWatchpointSlotCount() override;
100 bool notify = true) override;
102 bool notify = true) override;
103
104protected:
105 ProcessWindows(lldb::TargetSP target_sp, lldb::ListenerSP listener_sp);
106
108 MemoryRegionInfo &info) override;
109
110private:
112 uint32_t slot_id;
114 uint32_t size;
115 bool read;
116 bool write;
117 };
118 std::map<lldb::break_id_t, WatchpointInfo> m_watchpoints;
119 std::vector<lldb::break_id_t> m_watchpoint_ids;
120};
121} // namespace lldb_private
122
123#endif // liblldb_Plugins_Process_Windows_Common_ProcessWindows_H_
static llvm::raw_ostream & error(Stream &strm)
ExceptionResult
Definition: ForwardDecl.h:16
An architecture specification class.
Definition: ArchSpec.h:31
Class that manages the actual breakpoint that will be inserted into the running program.
A file utility class.
Definition: FileSpec.h:56
A class that describes an executable image and its associated object and symbol files.
Definition: Module.h:88
void OnLoadDll(const ModuleSpec &module_spec, lldb::addr_t module_addr) override
void OnDebugString(const std::string &string) override
bool DoUpdateThreadList(ThreadList &old_thread_list, ThreadList &new_thread_list) override
Update the thread list following process plug-in's specific logic.
size_t PutSTDIN(const char *buf, size_t buf_size, Status &error) override
Puts data into this process's STDIN.
void RefreshStateAfterStop() override
Currently called as part of ShouldStop.
void OnDebuggerConnected(lldb::addr_t image_base) override
Status DoDeallocateMemory(lldb::addr_t ptr) override
Actually deallocate memory in the process.
Status EnableBreakpointSite(BreakpointSite *bp_site) override
void DidLaunch() override
Called after launching a process.
std::optional< uint32_t > GetWatchpointSlotCount() override
Get the number of watchpoints supported by this target.
void OnUnloadDll(lldb::addr_t module_addr) override
DynamicLoaderWindowsDYLD * GetDynamicLoader() override
Get the dynamic loader plug-in for this process.
Status DoResume() override
Resumes all of a process's threads as configured using the Thread run control functions.
size_t GetSTDOUT(char *buf, size_t buf_size, Status &error) override
Get any available STDOUT.
Status DisableWatchpoint(lldb::WatchpointSP wp_sp, bool notify=true) override
bool IsAlive() override
Check if a process is still alive.
Status DoGetMemoryRegionInfo(lldb::addr_t vm_addr, MemoryRegionInfo &info) override
DoGetMemoryRegionInfo is called by GetMemoryRegionInfo after it has removed non address bits from loa...
void OnCreateThread(const HostThread &thread) override
static llvm::StringRef GetPluginDescriptionStatic()
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.
llvm::StringRef GetPluginName() override
Status DoLaunch(Module *exe_module, ProcessLaunchInfo &launch_info) override
Launch a new 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.
bool CanDebug(lldb::TargetSP target_sp, bool plugin_specified_by_name) override
Check if a plug-in instance can debug the file in module.
static llvm::StringRef GetPluginNameStatic()
void DidAttach(lldb_private::ArchSpec &arch_spec) override
Called after attaching a process.
void OnExitProcess(uint32_t exit_code) override
static lldb::ProcessSP CreateInstance(lldb::TargetSP target_sp, lldb::ListenerSP listener_sp, const FileSpec *, bool can_connect)
void OnExitThread(lldb::tid_t thread_id, uint32_t exit_code) override
Status DoAttachToProcessWithID(lldb::pid_t pid, const lldb_private::ProcessAttachInfo &attach_info) override
Attach to an existing process using a process ID.
lldb::addr_t GetImageInfoAddress() override
Get the image information address for the current process.
ExceptionResult OnDebugException(bool first_chance, const ExceptionRecord &record) override
std::map< lldb::break_id_t, WatchpointInfo > m_watchpoints
void OnDebuggerError(const Status &error, uint32_t type) override
ArchSpec GetSystemArchitecture() override
Get the system architecture for this process.
Status DoDetach(bool keep_stopped) override
Detaches from a running or stopped process.
std::vector< lldb::break_id_t > m_watchpoint_ids
size_t GetSTDERR(char *buf, size_t buf_size, Status &error) override
Get any available STDERR.
lldb::addr_t DoAllocateMemory(size_t size, uint32_t permissions, Status &error) override
Actually allocate memory in the process.
Status DisableBreakpointSite(BreakpointSite *bp_site) override
Status DoHalt(bool &caused_stop) override
Halts a running process.
bool DestroyRequiresHalt() override
Status EnableWatchpoint(lldb::WatchpointSP wp_sp, bool notify=true) override
A plug-in interface definition class for debugging a process.
Definition: Process.h:341
An error handling class.
Definition: Status.h:44
A class that represents a running process on the host machine.
Definition: SBAttachInfo.h:14
std::shared_ptr< lldb_private::Process > ProcessSP
Definition: lldb-forward.h:381
uint64_t pid_t
Definition: lldb-types.h:81
std::shared_ptr< lldb_private::Watchpoint > WatchpointSP
Definition: lldb-forward.h:477
std::shared_ptr< lldb_private::Listener > ListenerSP
Definition: lldb-forward.h:360
uint64_t addr_t
Definition: lldb-types.h:79
std::shared_ptr< lldb_private::Target > TargetSP
Definition: lldb-forward.h:436
uint64_t tid_t
Definition: lldb-types.h:82