blob: d5607b75e59c863a7519abf3e3f21cd9b8107ad6 [file] [log] [blame]
Zachary Turner35ed1322014-07-28 16:45:18 +00001//===-- ProcessWindows.h ----------------------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef liblldb_Plugins_Process_Windows_ProcessWindows_H_
11#define liblldb_Plugins_Process_Windows_ProcessWindows_H_
12
13// C Includes
14
15// C++ Includes
Zachary Turner8f211742014-11-04 00:00:12 +000016#include <map>
Zachary Turner35ed1322014-07-28 16:45:18 +000017#include <queue>
18
19// Other libraries and framework includes
Zachary Turner742346a2014-11-05 22:16:28 +000020#include "ForwardDecl.h"
21#include "IDebugDelegate.h"
Zachary Turner8f211742014-11-04 00:00:12 +000022#include "lldb/Host/HostThread.h"
Zachary Turner35ed1322014-07-28 16:45:18 +000023#include "lldb/Target/Process.h"
24
25class ProcessMonitor;
26
Zachary Turner8f211742014-11-04 00:00:12 +000027namespace lldb_private
28{
29class HostProcess;
30}
31
Zachary Turner742346a2014-11-05 22:16:28 +000032class ProcessWindows : public lldb_private::Process, public lldb_private::IDebugDelegate
Zachary Turner35ed1322014-07-28 16:45:18 +000033{
34public:
35 //------------------------------------------------------------------
36 // Static functions.
37 //------------------------------------------------------------------
38 static lldb::ProcessSP
39 CreateInstance(lldb_private::Target& target,
40 lldb_private::Listener &listener,
41 const lldb_private::FileSpec *);
42
43 static void
44 Initialize();
45
46 static void
47 Terminate();
48
49 static lldb_private::ConstString
50 GetPluginNameStatic();
51
52 static const char *
53 GetPluginDescriptionStatic();
54
55 //------------------------------------------------------------------
56 // Constructors and destructors
57 //------------------------------------------------------------------
58 ProcessWindows(lldb_private::Target& target,
59 lldb_private::Listener &listener);
60
Zachary Turner8f211742014-11-04 00:00:12 +000061 ~ProcessWindows();
62
Zachary Turner35ed1322014-07-28 16:45:18 +000063 virtual lldb_private::Error
64 DoDetach(bool keep_stopped);
65
66 virtual bool
67 DetachRequiresHalt() { return true; }
68
69 virtual bool
70 UpdateThreadList(lldb_private::ThreadList &old_thread_list, lldb_private::ThreadList &new_thread_list);
71
72 virtual lldb_private::Error
73 DoLaunch (lldb_private::Module *exe_module,
74 lldb_private::ProcessLaunchInfo &launch_info);
75
76 virtual lldb_private::Error
77 DoResume ();
78
79 //------------------------------------------------------------------
80 // PluginInterface protocol
81 //------------------------------------------------------------------
82 virtual lldb_private::ConstString
83 GetPluginName();
84
85 virtual uint32_t
86 GetPluginVersion();
87
88 virtual void
89 GetPluginCommandHelp(const char *command, lldb_private::Stream *strm);
90
91 virtual lldb_private::Error
92 ExecutePluginCommand(lldb_private::Args &command,
93 lldb_private::Stream *strm);
94
95 virtual lldb_private::Log *
96 EnablePluginLogging(lldb_private::Stream *strm,
97 lldb_private::Args &command);
98
99
100 virtual bool
101 CanDebug(lldb_private::Target &target, bool plugin_specified_by_name);
102
103 virtual lldb_private::Error
104 DoDestroy ();
105
106 virtual void
107 RefreshStateAfterStop ();
108
109 virtual bool
110 IsAlive ();
111
Zachary Turner8f211742014-11-04 00:00:12 +0000112 virtual size_t DoReadMemory(lldb::addr_t vm_addr, void *buf, size_t size, lldb_private::Error &error);
Zachary Turner742346a2014-11-05 22:16:28 +0000113
114 // IDebugDelegate overrides.
115 virtual void OnProcessLaunched(const lldb_private::ProcessMessageCreateProcess &message) override;
116 virtual void OnExitProcess(const lldb_private::ProcessMessageExitProcess &message) override;
117 virtual void OnDebuggerConnected(const lldb_private::ProcessMessageDebuggerConnected &message) override;
118 virtual void OnDebugException(const lldb_private::ProcessMessageException &message) override;
119 virtual void OnCreateThread(const lldb_private::ProcessMessageCreateThread &message) override;
120 virtual void OnExitThread(const lldb_private::ProcessMessageExitThread &message) override;
121 virtual void OnLoadDll(const lldb_private::ProcessMessageLoadDll &message) override;
122 virtual void OnUnloadDll(const lldb_private::ProcessMessageUnloadDll &message) override;
123 virtual void OnDebugString(const lldb_private::ProcessMessageDebugString &message) override;
124 virtual void OnDebuggerError(const lldb_private::ProcessMessageDebuggerError &message) override;
Zachary Turner35ed1322014-07-28 16:45:18 +0000125};
126
127#endif // liblldb_Plugins_Process_Windows_ProcessWindows_H_