VirtualBox

source: vbox/trunk/src/VBox/VMM/VMMR3/EMR3Dbg.cpp@ 50653

Last change on this file since 50653 was 46424, checked in by vboxsync, 11 years ago

VMM,Main: Introduced a execute-all-in-IEM debug mode.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.4 KB
Line 
1/* $Id: EMR3Dbg.cpp 46424 2013-06-06 22:12:05Z vboxsync $ */
2/** @file
3 * EM - Execution Monitor / Manager, Debugger Related Bits.
4 */
5
6/*
7 * Copyright (C) 2006-2013 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 */
17
18/*******************************************************************************
19* Header Files *
20*******************************************************************************/
21#define LOG_GROUP LOG_GROUP_EM
22#include <VBox/vmm/em.h>
23#include <VBox/dbg.h>
24#include "EMInternal.h"
25
26
27/** @callback_method_impl{FNDBGCCMD,
28 * Implements the '.alliem' command. }
29 */
30static DECLCALLBACK(int) enmR3DbgCmdAllIem(PCDBGCCMD pCmd, PDBGCCMDHLP pCmdHlp, PUVM pUVM, PCDBGCVAR paArgs, unsigned cArgs)
31{
32 int rc;
33 bool f;
34
35 if (cArgs == 0)
36 {
37 rc = EMR3QueryExecutionPolicy(pUVM, EMEXECPOLICY_IEM_ALL, &f);
38 if (RT_FAILURE(rc))
39 return DBGCCmdHlpFailRc(pCmdHlp, pCmd, rc, "EMR3QueryExecutionPolicy(,EMEXECPOLICY_IEM_ALL,");
40 DBGCCmdHlpPrintf(pCmdHlp, f ? "alliem: enabled\n" : "alliem: disabled\n");
41 }
42 else
43 {
44 rc = DBGCCmdHlpVarToBool(pCmdHlp, &paArgs[0], &f);
45 if (RT_FAILURE(rc))
46 return DBGCCmdHlpFailRc(pCmdHlp, pCmd, rc, "DBGCCmdHlpVarToBool");
47 rc = EMR3SetExecutionPolicy(pUVM, EMEXECPOLICY_IEM_ALL, f);
48 if (RT_FAILURE(rc))
49 return DBGCCmdHlpFailRc(pCmdHlp, pCmd, rc, "EMR3SetExecutionPolicy(,EMEXECPOLICY_IEM_ALL,%RTbool)", f);
50 }
51 return VINF_SUCCESS;
52}
53
54
55/** Describes a optional boolean argument. */
56static DBGCVARDESC const g_BoolArg = { 0, 1, DBGCVAR_CAT_ANY, 0, "boolean", "Boolean value." };
57
58/** Commands. */
59static DBGCCMD const g_aCmds[] =
60{
61 {
62 "alliem", 0, 1, &g_BoolArg, 1, 0, enmR3DbgCmdAllIem, "[boolean]",
63 "Enables or disabled executing ALL code in IEM, if no arguments are given it displays the current status."
64 },
65};
66
67
68int emR3InitDbg(PVM pVM)
69{
70 int rc = DBGCRegisterCommands(&g_aCmds[0], RT_ELEMENTS(g_aCmds));
71 AssertLogRelRC(rc);
72 return rc;
73}
74
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use