9#ifndef liblldb_NativeProcessWindows_h_
10#define liblldb_NativeProcessWindows_h_
38 llvm::Expected<std::unique_ptr<NativeProcessProtocol>>
42 llvm::Expected<std::unique_ptr<NativeProcessProtocol>>
68 size_t &bytes_read)
override;
71 size_t &bytes_written)
override;
74 uint32_t permissions)
override;
89 bool hardware)
override;
93 llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>>
120 llvm::Expected<llvm::ArrayRef<uint8_t>>
128 std::string description =
"");
132 std::string description =
"");
172 m_process.OnDebuggerConnected(image_base);
177 return m_process.OnDebugException(first_chance, record);
185 m_process.OnExitThread(thread_id, exit_code);
190 m_process.OnLoadDll(module_spec, module_addr);
198 uint16_t length_lower_word)
override {
199 m_process.OnDebugString(debug_string_addr, is_unicode, length_lower_word);
static llvm::raw_ostream & error(Stream &strm)
An architecture specification class.
void OnLoadDll(const lldb_private::ModuleSpec &module_spec, lldb::addr_t module_addr) override
void OnExitProcess(uint32_t exit_code) override
NativeProcessWindows & m_process
void OnDebugString(lldb::addr_t debug_string_addr, bool is_unicode, uint16_t length_lower_word) override
void OnExitThread(lldb::tid_t thread_id, uint32_t exit_code) override
void OnDebuggerError(const Status &error, uint32_t type) override
ExceptionResult OnDebugException(bool first_chance, const ExceptionRecord &record) override
void OnUnloadDll(lldb::addr_t module_addr) override
void OnCreateThread(const HostThread &thread) override
NativeDebugDelegate(NativeProcessWindows &process)
void OnDebuggerConnected(lldb::addr_t image_base) override
Manager(MainLoop &mainloop)
NativeProcessProtocol(lldb::pid_t pid, int terminal_fd, NativeDelegate &delegate)
Extension
Extension flag constants, returned by Manager::GetSupportedExtensions() and passed to SetEnabledExten...
llvm::Expected< std::unique_ptr< NativeProcessProtocol > > Launch(ProcessLaunchInfo &launch_info, NativeDelegate &native_delegate) override
Launch a process for debugging.
Manager(MainLoop &mainloop)
llvm::Expected< std::unique_ptr< NativeProcessProtocol > > Attach(lldb::pid_t pid, NativeDelegate &native_delegate) override
Attach to an existing process.
Extension GetSupportedExtensions() const override
Get the bitmask of extensions supported by this process plugin.
Status GetMemoryRegionInfo(lldb::addr_t load_addr, MemoryRegionInfo &range_info) override
ExceptionResult HandleBreakpointException(const ExceptionRecord &record)
llvm::Error DeallocateMemory(lldb::addr_t addr) override
Status Resume(const ResumeActionList &resume_actions) override
void OnCreateThread(const HostThread &thread) override
void OnExitProcess(uint32_t exit_code) override
Status GetLoadedModuleFileSpec(const char *module_path, FileSpec &file_spec) override
llvm::Expected< llvm::ArrayRef< uint8_t > > GetSoftwareBreakpointTrapOpcode(size_t size_hint) override
void OnDebuggerConnected(lldb::addr_t image_base) override
Status ReadMemory(lldb::addr_t addr, void *buf, size_t size, size_t &bytes_read) override
NativeProcessWindows(ProcessLaunchInfo &launch_info, NativeDelegate &delegate, llvm::Error &E)
bool IsAlive() const override
Status SetBreakpoint(lldb::addr_t addr, uint32_t size, bool hardware) override
Status CacheLoadedModules()
ExceptionResult HandleGenericException(bool first_chance, const ExceptionRecord &record)
void SetArchitecture(const ArchSpec &arch_spec)
ExceptionResult OnDebugException(bool first_chance, const ExceptionRecord &record) override
size_t GetSoftwareBreakpointPCOffset() override
Return the offset of the PC relative to the software breakpoint that was hit.
llvm::ErrorOr< std::unique_ptr< llvm::MemoryBuffer > > GetAuxvData() const override
void OnUnloadDll(lldb::addr_t module_addr) override
Status GetFileLoadAddress(const llvm::StringRef &file_name, lldb::addr_t &load_addr) override
NativeThreadWindows * GetThreadByID(lldb::tid_t thread_id)
Status WriteMemory(lldb::addr_t addr, const void *buf, size_t size, size_t &bytes_written) override
void OnExitThread(lldb::tid_t thread_id, uint32_t exit_code) override
llvm::Expected< lldb::addr_t > AllocateMemory(size_t size, uint32_t permissions) override
Status Signal(int signo) override
Sends a process a UNIX signal signal.
Status RemoveBreakpoint(lldb::addr_t addr, bool hardware=false) override
const ArchSpec & GetArchitecture() const override
void SetStopReasonForThread(NativeThreadWindows &thread, lldb::StopReason reason, std::string description="")
Status Interrupt() override
Tells a process to interrupt all operations as if by a Ctrl-C.
void OnLoadDll(const ModuleSpec &module_spec, lldb::addr_t module_addr) override
bool FindSoftwareBreakpoint(lldb::addr_t addr)
void StopThread(lldb::tid_t thread_id, lldb::StopReason reason, std::string description="")
size_t UpdateThreads() override
ExceptionResult HandleSingleStepException(const ExceptionRecord &record)
bool m_initial_stop_seen
Whether we've seen the loader breakpoint that fires once per process at launch / attach.
bool HasPendingLibraryEvents() override
bool m_pending_library_events
Set whenever an OS DLL load/unload event has been seen since the last stop reply.
llvm::Expected< std::vector< LoadedLibraryInfo > > GetLoadedLibraries() override
Return the currently loaded libraries of the target in the qXfer:libraries:read form (generic name + ...
lldb::addr_t GetSharedLibraryInfoAddress() override
Status IgnoreSignals(llvm::ArrayRef< int > signals) override
std::map< lldb_private::FileSpec, lldb::addr_t > m_loaded_modules
A class that represents a running process on the host machine.
std::shared_ptr< NativeDebugDelegate > NativeDebugDelegateSP
StopReason
Thread stop reasons.