VirtualBox

source: vbox/trunk/src/VBox/Main/include/MachineDebuggerImpl.h@ 51856

Last change on this file since 51856 was 51092, checked in by vboxsync, 11 years ago

6813 src-client/MachineDebuggerImpl.cpp + various formatting changes

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.1 KB
Line 
1/* $Id: MachineDebuggerImpl.h 51092 2014-04-16 17:57:25Z vboxsync $ */
2
3/** @file
4 *
5 * VirtualBox COM class implementation
6 */
7
8/*
9 * Copyright (C) 2006-2012 Oracle Corporation
10 *
11 * This file is part of VirtualBox Open Source Edition (OSE), as
12 * available from http://www.virtualbox.org. This file is free software;
13 * you can redistribute it and/or modify it under the terms of the GNU
14 * General Public License (GPL) as published by the Free Software
15 * Foundation, in version 2 as it comes in the "COPYING" file of the
16 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
17 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
18 */
19
20#ifndef ____H_MACHINEDEBUGGER
21#define ____H_MACHINEDEBUGGER
22
23#include "MachineDebuggerWrap.h"
24#include <iprt/log.h>
25#include <VBox/vmm/em.h>
26
27class Console;
28
29class ATL_NO_VTABLE MachineDebugger :
30 public MachineDebuggerWrap
31{
32
33public:
34
35 DECLARE_EMPTY_CTOR_DTOR (MachineDebugger)
36
37 HRESULT FinalConstruct();
38 void FinalRelease();
39
40 // public initializer/uninitializer for internal purposes only
41 HRESULT init (Console *aParent);
42 void uninit();
43
44 // "public-private methods"
45 void i_flushQueuedSettings();
46
47private:
48
49 // wrapped IMachineDeugger properties
50 HRESULT getSingleStep(BOOL *aSingleStep);
51 HRESULT setSingleStep(BOOL aSingleStep);
52 HRESULT getRecompileUser(BOOL *aRecompileUser);
53 HRESULT setRecompileUser(BOOL aRecompileUser);
54 HRESULT getRecompileSupervisor(BOOL *aRecompileSupervisor);
55 HRESULT setRecompileSupervisor(BOOL aRecompileSupervisor);
56 HRESULT getExecuteAllInIEM(BOOL *aExecuteAllInIEM);
57 HRESULT setExecuteAllInIEM(BOOL aExecuteAllInIEM);
58 HRESULT getPATMEnabled(BOOL *aPATMEnabled);
59 HRESULT setPATMEnabled(BOOL aPATMEnabled);
60 HRESULT getCSAMEnabled(BOOL *aCSAMEnabled);
61 HRESULT setCSAMEnabled(BOOL aCSAMEnabled);
62 HRESULT getLogEnabled(BOOL *aLogEnabled);
63 HRESULT setLogEnabled(BOOL aLogEnabled);
64 HRESULT getLogDbgFlags(com::Utf8Str &aLogDbgFlags);
65 HRESULT getLogDbgGroups(com::Utf8Str &aLogDbgGroups);
66 HRESULT getLogDbgDestinations(com::Utf8Str &aLogDbgDestinations);
67 HRESULT getLogRelFlags(com::Utf8Str &aLogRelFlags);
68 HRESULT getLogRelGroups(com::Utf8Str &aLogRelGroups);
69 HRESULT getLogRelDestinations(com::Utf8Str &aLogRelDestinations);
70 HRESULT getHWVirtExEnabled(BOOL *aHWVirtExEnabled);
71 HRESULT getHWVirtExNestedPagingEnabled(BOOL *aHWVirtExNestedPagingEnabled);
72 HRESULT getHWVirtExVPIDEnabled(BOOL *aHWVirtExVPIDEnabled);
73 HRESULT getHWVirtExUXEnabled(BOOL *aHWVirtExUXEnabled);
74 HRESULT getOSName(com::Utf8Str &aOSName);
75 HRESULT getOSVersion(com::Utf8Str &aOSVersion);
76 HRESULT getPAEEnabled(BOOL *aPAEEnabled);
77 HRESULT getVirtualTimeRate(ULONG *aVirtualTimeRate);
78 HRESULT setVirtualTimeRate(ULONG aVirtualTimeRate);
79 HRESULT getVM(LONG64 *aVM);
80
81 // wrapped IMachineDeugger properties
82 HRESULT dumpGuestCore(const com::Utf8Str &aFilename,
83 const com::Utf8Str &aCompression);
84 HRESULT dumpHostProcessCore(const com::Utf8Str &aFilename,
85 const com::Utf8Str &aCompression);
86 HRESULT info(const com::Utf8Str &aName,
87 const com::Utf8Str &aArgs,
88 com::Utf8Str &aInfo);
89 HRESULT injectNMI();
90 HRESULT modifyLogGroups(const com::Utf8Str &aSettings);
91 HRESULT modifyLogFlags(const com::Utf8Str &aSettings);
92 HRESULT modifyLogDestinations(const com::Utf8Str &aSettings);
93 HRESULT readPhysicalMemory(LONG64 aAddress,
94 ULONG aSize,
95 std::vector<BYTE> &aBytes);
96 HRESULT writePhysicalMemory(LONG64 aAddress,
97 ULONG aSize,
98 const std::vector<BYTE> &aBytes);
99 HRESULT readVirtualMemory(ULONG aCpuId,
100 LONG64 aAddress,
101 ULONG aSize,
102 std::vector<BYTE> &aBytes);
103 HRESULT writeVirtualMemory(ULONG aCpuId,
104 LONG64 aAddress,
105 ULONG aSize,
106 const std::vector<BYTE> &aBytes);
107 HRESULT detectOS(com::Utf8Str &aOs);
108 HRESULT getRegister(ULONG aCpuId,
109 const com::Utf8Str &aName,
110 com::Utf8Str &aValue);
111 HRESULT getRegisters(ULONG aCpuId,
112 std::vector<com::Utf8Str> &aNames,
113 std::vector<com::Utf8Str> &aValues);
114 HRESULT setRegister(ULONG aCpuId,
115 const com::Utf8Str &aName,
116 const com::Utf8Str &aValue);
117 HRESULT setRegisters(ULONG aCpuId,
118 const std::vector<com::Utf8Str> &aNames,
119 const std::vector<com::Utf8Str> &aValues);
120 HRESULT dumpGuestStack(ULONG aCpuId,
121 com::Utf8Str &aStack);
122 HRESULT resetStats(const com::Utf8Str &aPattern);
123 HRESULT dumpStats(const com::Utf8Str &aPattern);
124 HRESULT getStats(const com::Utf8Str &aPattern,
125 BOOL aWithDescriptions,
126 com::Utf8Str &aStats);
127
128 // private methods
129 bool i_queueSettings() const;
130 HRESULT i_getEmExecPolicyProperty(EMEXECPOLICY enmPolicy, BOOL *pfEnforced);
131 HRESULT i_setEmExecPolicyProperty(EMEXECPOLICY enmPolicy, BOOL fEnforce);
132
133 /** RTLogGetFlags, RTLogGetGroupSettings and RTLogGetDestinations function. */
134 typedef DECLCALLBACK(int) FNLOGGETSTR(PRTLOGGER, char *, size_t);
135 /** Function pointer. */
136 typedef FNLOGGETSTR *PFNLOGGETSTR;
137 HRESULT i_logStringProps(PRTLOGGER pLogger, PFNLOGGETSTR pfnLogGetStr, const char *pszLogGetStr, Utf8Str aSettings);
138
139 Console * const mParent;
140 /** @name Flags whether settings have been queued because they could not be sent
141 * to the VM (not up yet, etc.)
142 * @{ */
143 uint8_t maiQueuedEmExecPolicyParams[EMEXECPOLICY_END];
144 int mSingleStepQueued;
145 int mRecompileUserQueued;
146 int mRecompileSupervisorQueued;
147 int mPatmEnabledQueued;
148 int mCsamEnabledQueued;
149 int mLogEnabledQueued;
150 uint32_t mVirtualTimeRateQueued;
151 bool mFlushMode;
152 /** @} */
153};
154
155#endif /* !____H_MACHINEDEBUGGER */
156/* vi: set tabstop=4 shiftwidth=4 expandtab: */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette