LLDB  mainline
Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
lldb_private::DebuggerThread Class Reference

#include <DebuggerThread.h>

Inheritance diagram for lldb_private::DebuggerThread:
Inheritance graph
[legend]
Collaboration diagram for lldb_private::DebuggerThread:
Collaboration graph
[legend]

Public Member Functions

 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
 
HostThread GetMainThread () const
 
std::weak_ptr< ExceptionRecordGetActiveException ()
 
Status StopDebugging (bool terminate)
 
void ContinueAsyncException (ExceptionResult result)
 

Private Member Functions

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)
 
lldb::thread_result_t DebuggerThreadLaunchRoutine (const ProcessLaunchInfo &launch_info)
 
lldb::thread_result_t DebuggerThreadAttachRoutine (lldb::pid_t pid, const ProcessAttachInfo &launch_info)
 

Static Private Member Functions

static lldb::thread_result_t DebuggerThreadLaunchRoutine (void *data)
 
static lldb::thread_result_t DebuggerThreadAttachRoutine (void *data)
 

Private Attributes

DebugDelegateSP m_debug_delegate
 
HostProcess m_process
 
HostThread m_main_thread
 
HANDLE m_image_file = nullptr
 
ExceptionRecordSP m_active_exception
 
Predicate< ExceptionResultm_exception_pred
 
HANDLE m_debugging_ended_event = nullptr
 
std::atomic< DWORD > m_pid_to_detach
 
std::atomic< bool > m_is_shutting_down
 
bool m_detached = false
 

Detailed Description

Definition at line 27 of file DebuggerThread.h.

Constructor & Destructor Documentation

◆ DebuggerThread()

DebuggerThread::DebuggerThread ( DebugDelegateSP  debug_delegate)

Definition at line 58 of file DebuggerThread.cpp.

References m_debugging_ended_event.

◆ ~DebuggerThread()

DebuggerThread::~DebuggerThread ( )
virtual

Definition at line 64 of file DebuggerThread.cpp.

References m_debugging_ended_event.

Member Function Documentation

◆ ContinueAsyncException()

void DebuggerThread::ContinueAsyncException ( ExceptionResult  result)

◆ DebugAttach()

Status DebuggerThread::DebugAttach ( lldb::pid_t  pid,
const ProcessAttachInfo attach_info 
)

◆ DebuggerThreadAttachRoutine() [1/2]

lldb::thread_result_t DebuggerThread::DebuggerThreadAttachRoutine ( void *  data)
staticprivate

Definition at line 111 of file DebuggerThread.cpp.

Referenced by DebugAttach().

◆ DebuggerThreadAttachRoutine() [2/2]

lldb::thread_result_t DebuggerThread::DebuggerThreadAttachRoutine ( lldb::pid_t  pid,
const ProcessAttachInfo launch_info 
)
private

◆ DebuggerThreadLaunchRoutine() [1/2]

lldb::thread_result_t DebuggerThread::DebuggerThreadLaunchRoutine ( void *  data)
staticprivate

Definition at line 103 of file DebuggerThread.cpp.

Referenced by DebugLaunch().

◆ DebuggerThreadLaunchRoutine() [2/2]

lldb::thread_result_t DebuggerThread::DebuggerThreadLaunchRoutine ( const ProcessLaunchInfo launch_info)
private

◆ DebugLaunch()

Status DebuggerThread::DebugLaunch ( const ProcessLaunchInfo launch_info)

◆ DebugLoop()

void DebuggerThread::DebugLoop ( )
private

◆ FreeProcessHandles()

void DebuggerThread::FreeProcessHandles ( )
private

Definition at line 258 of file DebuggerThread.cpp.

References m_image_file, m_main_thread, and m_process.

Referenced by DebugLoop(), and GetActiveException().

◆ GetActiveException()

std::weak_ptr<ExceptionRecord> lldb_private::DebuggerThread::GetActiveException ( )
inline

◆ GetMainThread()

HostThread lldb_private::DebuggerThread::GetMainThread ( ) const
inline

Definition at line 36 of file DebuggerThread.h.

References m_main_thread.

◆ GetProcess()

HostProcess lldb_private::DebuggerThread::GetProcess ( ) const
inline

Definition at line 35 of file DebuggerThread.h.

References m_process.

Referenced by StopDebugging().

◆ HandleCreateProcessEvent()

DWORD DebuggerThread::HandleCreateProcessEvent ( const CREATE_PROCESS_DEBUG_INFO &  info,
DWORD  thread_id 
)
private

◆ HandleCreateThreadEvent()

DWORD DebuggerThread::HandleCreateThreadEvent ( const CREATE_THREAD_DEBUG_INFO &  info,
DWORD  thread_id 
)
private

◆ HandleExceptionEvent()

ExceptionResult DebuggerThread::HandleExceptionEvent ( const EXCEPTION_DEBUG_INFO &  info,
DWORD  thread_id 
)
private

◆ HandleExitProcessEvent()

DWORD DebuggerThread::HandleExitProcessEvent ( const EXIT_PROCESS_DEBUG_INFO &  info,
DWORD  thread_id 
)
private

◆ HandleExitThreadEvent()

DWORD DebuggerThread::HandleExitThreadEvent ( const EXIT_THREAD_DEBUG_INFO &  info,
DWORD  thread_id 
)
private

◆ HandleLoadDllEvent()

DWORD DebuggerThread::HandleLoadDllEvent ( const LOAD_DLL_DEBUG_INFO &  info,
DWORD  thread_id 
)
private

◆ HandleODSEvent()

DWORD DebuggerThread::HandleODSEvent ( const OUTPUT_DEBUG_STRING_INFO &  info,
DWORD  thread_id 
)
private

Definition at line 513 of file DebuggerThread.cpp.

Referenced by DebugLoop(), and GetActiveException().

◆ HandleRipEvent()

DWORD DebuggerThread::HandleRipEvent ( const RIP_INFO &  info,
DWORD  thread_id 
)
private

◆ HandleUnloadDllEvent()

DWORD DebuggerThread::HandleUnloadDllEvent ( const UNLOAD_DLL_DEBUG_INFO &  info,
DWORD  thread_id 
)
private

◆ StopDebugging()

Status DebuggerThread::StopDebugging ( bool  terminate)

Member Data Documentation

◆ m_active_exception

ExceptionRecordSP lldb_private::DebuggerThread::m_active_exception
private

◆ m_debug_delegate

DebugDelegateSP lldb_private::DebuggerThread::m_debug_delegate
private

◆ m_debugging_ended_event

HANDLE lldb_private::DebuggerThread::m_debugging_ended_event = nullptr
private

Definition at line 81 of file DebuggerThread.h.

Referenced by DebuggerThread(), DebugLoop(), StopDebugging(), and ~DebuggerThread().

◆ m_detached

bool lldb_private::DebuggerThread::m_detached = false
private

Definition at line 92 of file DebuggerThread.h.

Referenced by DebugLoop(), and HandleExceptionEvent().

◆ m_exception_pred

Predicate<ExceptionResult> lldb_private::DebuggerThread::m_exception_pred
private

Definition at line 77 of file DebuggerThread.h.

Referenced by ContinueAsyncException(), and HandleExceptionEvent().

◆ m_image_file

HANDLE lldb_private::DebuggerThread::m_image_file = nullptr
private

Definition at line 70 of file DebuggerThread.h.

Referenced by FreeProcessHandles(), and HandleCreateProcessEvent().

◆ m_is_shutting_down

std::atomic<bool> lldb_private::DebuggerThread::m_is_shutting_down
private

Definition at line 88 of file DebuggerThread.h.

Referenced by HandleExceptionEvent(), and StopDebugging().

◆ m_main_thread

HostThread lldb_private::DebuggerThread::m_main_thread
private

Definition at line 67 of file DebuggerThread.h.

Referenced by FreeProcessHandles(), GetMainThread(), and HandleCreateProcessEvent().

◆ m_pid_to_detach

std::atomic<DWORD> lldb_private::DebuggerThread::m_pid_to_detach
private

Definition at line 84 of file DebuggerThread.h.

Referenced by HandleExceptionEvent(), and StopDebugging().

◆ m_process

HostProcess lldb_private::DebuggerThread::m_process
private

The documentation for this class was generated from the following files: