diff options
Diffstat (limited to 'source/Plugins/Process/Windows/Common/DebuggerThread.h')
| -rw-r--r-- | source/Plugins/Process/Windows/Common/DebuggerThread.h | 106 |
1 files changed, 0 insertions, 106 deletions
diff --git a/source/Plugins/Process/Windows/Common/DebuggerThread.h b/source/Plugins/Process/Windows/Common/DebuggerThread.h deleted file mode 100644 index 047d3ccb7296..000000000000 --- a/source/Plugins/Process/Windows/Common/DebuggerThread.h +++ /dev/null @@ -1,106 +0,0 @@ -//===-- DebuggerThread.h ----------------------------------------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef liblldb_Plugins_Process_Windows_DebuggerThread_H_ -#define liblldb_Plugins_Process_Windows_DebuggerThread_H_ - -#include <atomic> -#include <memory> - -#include "ForwardDecl.h" -#include "lldb/Host/HostProcess.h" -#include "lldb/Host/HostThread.h" -#include "lldb/Host/windows/windows.h" -#include "lldb/Utility/Predicate.h" - -namespace lldb_private { - -//---------------------------------------------------------------------- -// DebuggerThread -// -// Debugs a single process, notifying listeners as appropriate when interesting -// things occur. -//---------------------------------------------------------------------- -class DebuggerThread : public std::enable_shared_from_this<DebuggerThread> { -public: - DebuggerThread(DebugDelegateSP debug_delegate); - virtual ~DebuggerThread(); - - Status DebugLaunch(const ProcessLaunchInfo &launch_info); - Status DebugAttach(lldb::pid_t pid, const ProcessAttachInfo &attach_info); - - HostProcess GetProcess() const { return m_process; } - HostThread GetMainThread() const { return m_main_thread; } - std::weak_ptr<ExceptionRecord> GetActiveException() { - return m_active_exception; - } - - Status StopDebugging(bool terminate); - - void ContinueAsyncException(ExceptionResult result); - -private: - void FreeProcessHandles(); - void DebugLoop(); - ExceptionResult HandleExceptionEvent(const EXCEPTION_DEBUG_INFO &info, - DWORD thread_id); - DWORD HandleCreateThreadEvent(const CREATE_THREAD_DEBUG_INFO &info, - DWORD thread_id); - DWORD HandleCreateProcessEvent(const CREATE_PROCESS_DEBUG_INFO &info, - DWORD thread_id); - DWORD HandleExitThreadEvent(const EXIT_THREAD_DEBUG_INFO &info, - DWORD thread_id); - DWORD HandleExitProcessEvent(const EXIT_PROCESS_DEBUG_INFO &info, - DWORD thread_id); - DWORD HandleLoadDllEvent(const LOAD_DLL_DEBUG_INFO &info, DWORD thread_id); - DWORD HandleUnloadDllEvent(const UNLOAD_DLL_DEBUG_INFO &info, - DWORD thread_id); - DWORD HandleODSEvent(const OUTPUT_DEBUG_STRING_INFO &info, DWORD thread_id); - DWORD HandleRipEvent(const RIP_INFO &info, DWORD thread_id); - - DebugDelegateSP m_debug_delegate; - - HostProcess m_process; // The process being debugged. - HostThread m_main_thread; // The main thread of the inferior. - - // The image file of the process being debugged. - HANDLE m_image_file = nullptr; - - // The current exception waiting to be handled - ExceptionRecordSP m_active_exception; - - // A predicate which gets signalled when an exception is finished processing - // and the debug loop can be continued. - Predicate<ExceptionResult> m_exception_pred; - - // An event which gets signalled by the debugger thread when it exits the - // debugger loop and is detached from the inferior. - HANDLE m_debugging_ended_event = nullptr; - - // Signals the loop to detach from the process (specified by pid). - std::atomic<DWORD> m_pid_to_detach; - - // Signals the debug loop to stop processing certain types of events that - // block shutdown. - std::atomic<bool> m_is_shutting_down; - - // Indicates we've detached from the inferior process and the debug loop can - // exit. - bool m_detached = false; - - static lldb::thread_result_t DebuggerThreadLaunchRoutine(void *data); - lldb::thread_result_t - DebuggerThreadLaunchRoutine(const ProcessLaunchInfo &launch_info); - static lldb::thread_result_t DebuggerThreadAttachRoutine(void *data); - lldb::thread_result_t - DebuggerThreadAttachRoutine(lldb::pid_t pid, - const ProcessAttachInfo &launch_info); -}; -} -#endif |
