aboutsummaryrefslogtreecommitdiff
path: root/source/Plugins/Process/Windows/Common/DebuggerThread.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/Plugins/Process/Windows/Common/DebuggerThread.h')
-rw-r--r--source/Plugins/Process/Windows/Common/DebuggerThread.h106
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