VirtualBox

Changeset 34913 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Dec 9, 2010 5:20:41 PM (14 years ago)
Author:
vboxsync
Message:

VBoxManage: Added a debugvm command for injectnmi and dumpguestcore.

Location:
trunk/src/VBox
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VBoxManage/Makefile.kmk

    r34587 r34913  
    3636        VBoxInternalManage.cpp \
    3737        VBoxManageControlVM.cpp \
     38        VBoxManageDebugVM.cpp \
    3839        VBoxManageDHCPServer.cpp \
    3940        VBoxManageDisk.cpp \
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManage.cpp

    r34634 r34913  
    432432            { "extpack",          USAGE_EXTPACK,           handleExtPack},
    433433            { "bandwidthctl",     USAGE_BANDWIDTHCONTROL,  handleBandwidthControl},
     434            { "debugvm",          USAGE_DEBUGVM,           handleDebugVM},
    434435            { NULL,               0,                       NULL }
    435436        };
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManage.h

    r34634 r34913  
    9898#define USAGE_EXTPACK               RT_BIT_64(55)
    9999#define USAGE_BANDWIDTHCONTROL      RT_BIT_64(56)
     100#define USAGE_DEBUGVM               RT_BIT_64(57)
    100101#define USAGE_ALL                   (~(uint64_t)0)
    101102/** @} */
     
    166167/* VBoxManageModifyVM.cpp */
    167168int handleModifyVM(HandlerArg *a);
     169
     170/* VBoxManageDebugVM.cpp */
     171int handleDebugVM(HandlerArg *a);
    168172
    169173/* VBoxManageGuestProp.cpp */
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp

    r34604 r34913  
    11/* $Id$ */
    22/** @file
    3  * VBoxManage - Implementation of controlvm command.
     3 * VBoxManage - Implementation of the controlvm command.
    44 */
    55
     
    10151015        else
    10161016        {
    1017             errorSyntax(USAGE_CONTROLVM, "Invalid parameter '%s'", Utf8Str(a->argv[1]).c_str());
     1017            errorSyntax(USAGE_CONTROLVM, "Invalid parameter '%s'", a->argv[1]);
    10181018            rc = E_FAIL;
    10191019        }
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp

    r34888 r34913  
    2222#include <VBox/version.h>
    2323
     24#include <iprt/buildconfig.h>
    2425#include <iprt/ctype.h>
    2526#include <iprt/err.h>
     
    676677                     "\n");
    677678    }
     679    if (u64Cmd & USAGE_DEBUGVM)
     680    {
     681        RTStrmPrintf(pStrm,
     682                     "VBoxManage debugvm          <uuid>|<name>\n"
     683                     "                            injectnmi |\n"
     684                     "                            dumpguestcore --filename <name>\n"
     685                     "\n");
     686    }
    678687}
    679688
     
    709718RTEXITCODE errorGetOpt(USAGECATEGORY fUsageCategory, int rc, union RTGETOPTUNION const *pValueUnion)
    710719{
     720    /*
     721     * Check if it is an unhandled standard option.
     722     */
     723    if (rc == 'V')
     724    {
     725        RTPrintf("%sr%d\n", VBOX_VERSION_STRING, RTBldCfgRevision());
     726        return RTEXITCODE_SUCCESS;
     727    }
     728
     729    if (rc == 'h')
     730    {
     731        showLogo(g_pStdErr);
     732#ifndef VBOX_ONLY_DOCS
     733        if (g_fInternalMode)
     734            printUsageInternal(fUsageCategory, g_pStdOut);
     735        else
     736            printUsage(fUsageCategory, g_pStdOut);
     737#endif
     738        return RTEXITCODE_SUCCESS;
     739    }
     740
     741    /*
     742     * General failure.
     743     */
    711744    showLogo(g_pStdErr); // show logo even if suppressed
    712745#ifndef VBOX_ONLY_DOCS
  • trunk/src/VBox/Main/MachineDebuggerImpl.cpp

    r34902 r34913  
    727727
    728728    AutoCaller autoCaller(this);
    729     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    730 
    731     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
    732 
    733     Console::SafeVMPtr pVM(mParent);
    734     if (FAILED(pVM.rc())) return pVM.rc();
    735 
    736     HWACCMR3InjectNMI(pVM);
    737 
    738     return S_OK;
     729    HRESULT hrc = autoCaller.rc();
     730    if (SUCCEEDED(hrc))
     731    {
     732        AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     733        Console::SafeVMPtr ptrVM(mParent);
     734        hrc = ptrVM.rc();
     735        if (SUCCEEDED(hrc))
     736        {
     737            int vrc = HWACCMR3InjectNMI(ptrVM);
     738            if (RT_SUCCESS(vrc))
     739                hrc = S_OK;
     740            else
     741                hrc = setError(E_FAIL, tr("HWACCMR3InjectNMI failed with %Rrc"), vrc);
     742        }
     743    }
     744    return hrc;
    739745}
    740746
Note: See TracChangeset for help on using the changeset viewer.

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