summaryrefslogtreecommitdiffstats
path: root/src/VBox/Main/include/MachineDebuggerImpl.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/VBox/Main/include/MachineDebuggerImpl.h165
1 files changed, 165 insertions, 0 deletions
diff --git a/src/VBox/Main/include/MachineDebuggerImpl.h b/src/VBox/Main/include/MachineDebuggerImpl.h
new file mode 100644
index 00000000..8ee2c355
--- /dev/null
+++ b/src/VBox/Main/include/MachineDebuggerImpl.h
@@ -0,0 +1,165 @@
+/* $Id: MachineDebuggerImpl.h $ */
+/** @file
+ * VirtualBox COM class implementation
+ */
+
+/*
+ * Copyright (C) 2006-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifndef MAIN_INCLUDED_MachineDebuggerImpl_h
+#define MAIN_INCLUDED_MachineDebuggerImpl_h
+#ifndef RT_WITHOUT_PRAGMA_ONCE
+# pragma once
+#endif
+
+#include "MachineDebuggerWrap.h"
+#include <iprt/log.h>
+#include <VBox/vmm/em.h>
+
+class Console;
+
+class ATL_NO_VTABLE MachineDebugger :
+ public MachineDebuggerWrap
+{
+
+public:
+
+ DECLARE_EMPTY_CTOR_DTOR (MachineDebugger)
+
+ HRESULT FinalConstruct();
+ void FinalRelease();
+
+ // public initializer/uninitializer for internal purposes only
+ HRESULT init (Console *aParent);
+ void uninit();
+
+ // "public-private methods"
+ void i_flushQueuedSettings();
+
+private:
+
+ // wrapped IMachineDeugger properties
+ HRESULT getSingleStep(BOOL *aSingleStep);
+ HRESULT setSingleStep(BOOL aSingleStep);
+ HRESULT getRecompileUser(BOOL *aRecompileUser);
+ HRESULT setRecompileUser(BOOL aRecompileUser);
+ HRESULT getRecompileSupervisor(BOOL *aRecompileSupervisor);
+ HRESULT setRecompileSupervisor(BOOL aRecompileSupervisor);
+ HRESULT getExecuteAllInIEM(BOOL *aExecuteAllInIEM);
+ HRESULT setExecuteAllInIEM(BOOL aExecuteAllInIEM);
+ HRESULT getPATMEnabled(BOOL *aPATMEnabled);
+ HRESULT setPATMEnabled(BOOL aPATMEnabled);
+ HRESULT getCSAMEnabled(BOOL *aCSAMEnabled);
+ HRESULT setCSAMEnabled(BOOL aCSAMEnabled);
+ HRESULT getLogEnabled(BOOL *aLogEnabled);
+ HRESULT setLogEnabled(BOOL aLogEnabled);
+ HRESULT getLogDbgFlags(com::Utf8Str &aLogDbgFlags);
+ HRESULT getLogDbgGroups(com::Utf8Str &aLogDbgGroups);
+ HRESULT getLogDbgDestinations(com::Utf8Str &aLogDbgDestinations);
+ HRESULT getLogRelFlags(com::Utf8Str &aLogRelFlags);
+ HRESULT getLogRelGroups(com::Utf8Str &aLogRelGroups);
+ HRESULT getLogRelDestinations(com::Utf8Str &aLogRelDestinations);
+ HRESULT getExecutionEngine(VMExecutionEngine_T *apenmEngine);
+ HRESULT getHWVirtExEnabled(BOOL *aHWVirtExEnabled);
+ HRESULT getHWVirtExNestedPagingEnabled(BOOL *aHWVirtExNestedPagingEnabled);
+ HRESULT getHWVirtExVPIDEnabled(BOOL *aHWVirtExVPIDEnabled);
+ HRESULT getHWVirtExUXEnabled(BOOL *aHWVirtExUXEnabled);
+ HRESULT getOSName(com::Utf8Str &aOSName);
+ HRESULT getOSVersion(com::Utf8Str &aOSVersion);
+ HRESULT getPAEEnabled(BOOL *aPAEEnabled);
+ HRESULT getVirtualTimeRate(ULONG *aVirtualTimeRate);
+ HRESULT setVirtualTimeRate(ULONG aVirtualTimeRate);
+ HRESULT getVM(LONG64 *aVM);
+ HRESULT getUptime(LONG64 *aUptime);
+
+ // wrapped IMachineDeugger properties
+ HRESULT dumpGuestCore(const com::Utf8Str &aFilename,
+ const com::Utf8Str &aCompression);
+ HRESULT dumpHostProcessCore(const com::Utf8Str &aFilename,
+ const com::Utf8Str &aCompression);
+ HRESULT info(const com::Utf8Str &aName,
+ const com::Utf8Str &aArgs,
+ com::Utf8Str &aInfo);
+ HRESULT injectNMI();
+ HRESULT modifyLogGroups(const com::Utf8Str &aSettings);
+ HRESULT modifyLogFlags(const com::Utf8Str &aSettings);
+ HRESULT modifyLogDestinations(const com::Utf8Str &aSettings);
+ HRESULT readPhysicalMemory(LONG64 aAddress,
+ ULONG aSize,
+ std::vector<BYTE> &aBytes);
+ HRESULT writePhysicalMemory(LONG64 aAddress,
+ ULONG aSize,
+ const std::vector<BYTE> &aBytes);
+ HRESULT readVirtualMemory(ULONG aCpuId,
+ LONG64 aAddress,
+ ULONG aSize,
+ std::vector<BYTE> &aBytes);
+ HRESULT writeVirtualMemory(ULONG aCpuId,
+ LONG64 aAddress,
+ ULONG aSize,
+ const std::vector<BYTE> &aBytes);
+ HRESULT loadPlugIn(const com::Utf8Str &aName,
+ com::Utf8Str &aPlugInName);
+ HRESULT unloadPlugIn(const com::Utf8Str &aName);
+ HRESULT detectOS(com::Utf8Str &aOs);
+ HRESULT queryOSKernelLog(ULONG aMaxMessages,
+ com::Utf8Str &aDmesg);
+ HRESULT getRegister(ULONG aCpuId,
+ const com::Utf8Str &aName,
+ com::Utf8Str &aValue);
+ HRESULT getRegisters(ULONG aCpuId,
+ std::vector<com::Utf8Str> &aNames,
+ std::vector<com::Utf8Str> &aValues);
+ HRESULT setRegister(ULONG aCpuId,
+ const com::Utf8Str &aName,
+ const com::Utf8Str &aValue);
+ HRESULT setRegisters(ULONG aCpuId,
+ const std::vector<com::Utf8Str> &aNames,
+ const std::vector<com::Utf8Str> &aValues);
+ HRESULT dumpGuestStack(ULONG aCpuId,
+ com::Utf8Str &aStack);
+ HRESULT resetStats(const com::Utf8Str &aPattern);
+ HRESULT dumpStats(const com::Utf8Str &aPattern);
+ HRESULT getStats(const com::Utf8Str &aPattern,
+ BOOL aWithDescriptions,
+ com::Utf8Str &aStats);
+ HRESULT getCPULoad(ULONG aCpuId, ULONG *aPctExecuting, ULONG *aPctHalted, ULONG *aPctOther, LONG64 *aMsInterval) RT_OVERRIDE;
+
+ // private methods
+ bool i_queueSettings() const;
+ HRESULT i_getEmExecPolicyProperty(EMEXECPOLICY enmPolicy, BOOL *pfEnforced);
+ HRESULT i_setEmExecPolicyProperty(EMEXECPOLICY enmPolicy, BOOL fEnforce);
+
+ /** RTLogGetFlags, RTLogGetGroupSettings and RTLogGetDestinations function. */
+ typedef DECLCALLBACK(int) FNLOGGETSTR(PRTLOGGER, char *, size_t);
+ /** Function pointer. */
+ typedef FNLOGGETSTR *PFNLOGGETSTR;
+ HRESULT i_logStringProps(PRTLOGGER pLogger, PFNLOGGETSTR pfnLogGetStr, const char *pszLogGetStr, Utf8Str *pstrSettings);
+
+ Console * const mParent;
+ /** @name Flags whether settings have been queued because they could not be sent
+ * to the VM (not up yet, etc.)
+ * @{ */
+ uint8_t maiQueuedEmExecPolicyParams[EMEXECPOLICY_END];
+ int mSingleStepQueued;
+ int mRecompileUserQueued;
+ int mRecompileSupervisorQueued;
+ int mPatmEnabledQueued;
+ int mCsamEnabledQueued;
+ int mLogEnabledQueued;
+ uint32_t mVirtualTimeRateQueued;
+ bool mFlushMode;
+ /** @} */
+};
+
+#endif /* !MAIN_INCLUDED_MachineDebuggerImpl_h */
+/* vi: set tabstop=4 shiftwidth=4 expandtab: */