VirtualBox

Changeset 56466 in vbox for trunk/src


Ignore:
Timestamp:
Jun 16, 2015 11:46:25 PM (10 years ago)
Author:
vboxsync
Message:

debugvm manpage, refsect2 titles, bunch of other hacking.

Location:
trunk/src/VBox/Frontends/VBoxManage
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManage.cpp

    r56422 r56466  
    156156    { "extpack",            USAGE_EXTPACK,       HELP_CMD_EXTPACK, handleExtPack,              0 },
    157157    { "bandwidthctl",       USAGE_BANDWIDTHCONTROL, VBMG_CMD_TODO, handleBandwidthControl,     0 },
    158     { "debugvm",            USAGE_DEBUGVM,          VBMG_CMD_TODO, handleDebugVM,              0 },
     158    { "debugvm",            USAGE_DEBUGVM,       HELP_CMD_DEBUGVM, handleDebugVM,              0 },
    159159    { "convertfromraw",     USAGE_CONVERTFROMRAW,   VBMG_CMD_TODO, handleConvertFromRaw,       VBMG_CMD_F_NO_COM },
    160160    { "convertdd",          USAGE_CONVERTFROMRAW,   VBMG_CMD_TODO, handleConvertFromRaw,       VBMG_CMD_F_NO_COM },
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageDebugVM.cpp

    r56119 r56466  
    106106
    107107            default:
    108                 return errorGetOpt(USAGE_DEBUGVM, rc, &ValueUnion);
     108                return errorGetOpt(rc, &ValueUnion);
    109109        }
    110110    }
    111111
    112112    if (!cRegisters)
    113         return errorSyntax(USAGE_DEBUGVM, "The getregisters sub-command takes at least one register name");
     113        return errorSyntax("The getregisters sub-command takes at least one register name");
    114114    return RTEXITCODE_SUCCESS;
    115115}
     
    119119 *
    120120 * @returns Suitable exit code.
    121  * @param   a                   The handler arguments.
    122  * @param   pDebugger           Pointer to the debugger interface.
    123  */
    124 static RTEXITCODE handleDebugVM_Info(HandlerArg *a, IMachineDebugger *pDebugger)
    125 {
    126     if (a->argc < 3 || a->argc > 4)
    127         return errorSyntax(USAGE_DEBUGVM, "The inject sub-command takes at one or two arguments");
    128 
    129     com::Bstr bstrName(a->argv[2]);
    130     com::Bstr bstrArgs(a->argv[3]);
     121 * @param   pArgs               The handler arguments.
     122 * @param   pDebugger           Pointer to the debugger interface.
     123 */
     124static RTEXITCODE handleDebugVM_Info(HandlerArg *pArgs, IMachineDebugger *pDebugger)
     125{
     126    /*
     127     * Parse arguments.
     128     */
     129    const char    *pszInfo = NULL;
     130    const char    *pszArgs = NULL;
     131    RTGETOPTSTATE  GetState;
     132    RTGETOPTUNION  ValueUnion;
     133    int rc = RTGetOptInit(&GetState, pArgs->argc, pArgs->argv, NULL, 0, 2, RTGETOPTINIT_FLAGS_OPTS_FIRST);
     134    AssertRCReturn(rc, RTEXITCODE_FAILURE);
     135
     136    while ((rc = RTGetOpt(&GetState, &ValueUnion)) != 0)
     137    {
     138        switch (rc)
     139        {
     140            case VINF_GETOPT_NOT_OPTION:
     141                if (!pszInfo)
     142                    pszInfo = ValueUnion.psz;
     143                else if (!pszArgs)
     144                    pszArgs = ValueUnion.psz;
     145                else
     146                    return errorTooManyParameters(&pArgs->argv[GetState.iNext - 1]);
     147                break;
     148            default:
     149                return errorGetOpt(rc, &ValueUnion);
     150        }
     151    }
     152
     153    if (!pszInfo)
     154        return errorSyntax("Must specify info item to display");
     155
     156    /*
     157     * Do the work.
     158     */
     159    com::Bstr bstrName(pszInfo);
     160    com::Bstr bstrArgs(pszArgs);
    131161    com::Bstr bstrInfo;
    132162    CHECK_ERROR2I_RET(pDebugger, Info(bstrName.raw(), bstrArgs.raw(), bstrInfo.asOutParam()), RTEXITCODE_FAILURE);
     
    145175{
    146176    if (a->argc != 2)
    147         return errorSyntax(USAGE_DEBUGVM, "The inject sub-command does not take any arguments");
     177        return errorTooManyParameters(&a->argv[1]);
    148178    CHECK_ERROR2I_RET(pDebugger, InjectNMI(), RTEXITCODE_FAILURE);
    149179    return RTEXITCODE_SUCCESS;
     
    263293            case 'c':
    264294                if (pszCompression)
    265                     return errorSyntax(USAGE_DEBUGVM, "The --compression option has already been given");
     295                    return errorSyntax("The --compression option has already been given");
    266296                pszCompression = ValueUnion.psz;
    267297                break;
    268298            case 'f':
    269299                if (pszFilename)
    270                     return errorSyntax(USAGE_DEBUGVM, "The --filename option has already been given");
     300                    return errorSyntax("The --filename option has already been given");
    271301                pszFilename = ValueUnion.psz;
    272302                break;
    273303            default:
    274                 return errorGetOpt(USAGE_DEBUGVM, rc, &ValueUnion);
     304                return errorGetOpt(rc, &ValueUnion);
    275305        }
    276306    }
    277307
    278308    if (!pszFilename)
    279         return errorSyntax(USAGE_DEBUGVM, "The --filename option is required");
     309        return errorSyntax("The --filename option is required");
    280310
    281311    /*
     
    303333{
    304334    if (a->argc != 2)
    305         return errorSyntax(USAGE_DEBUGVM, "The osdetect sub-command does not take any arguments");
     335        return errorTooManyParameters(&a->argv[1]);
    306336
    307337    com::Bstr bstrIgnore;
     
    325355{
    326356    if (a->argc != 2)
    327         return errorSyntax(USAGE_DEBUGVM, "The osinfo sub-command does not take any arguments");
     357        return errorTooManyParameters(&a->argv[1]);
    328358
    329359    com::Bstr bstrName;
     
    361391        {
    362392            case 'n': uMaxMessages = ValueUnion.u32; break;
    363             default: return errorGetOpt(USAGE_DEBUGVM, rc, &ValueUnion);
     393            default: return errorGetOpt(rc, &ValueUnion);
    364394        }
    365395
     
    410440                const char *pszEqual = strchr(ValueUnion.psz, '=');
    411441                if (!pszEqual)
    412                     return errorSyntax(USAGE_DEBUGVM, "setregisters expects input on the form 'register=value' got '%s'", ValueUnion.psz);
     442                    return errorSyntax("setregisters expects input on the form 'register=value' got '%s'", ValueUnion.psz);
    413443                try
    414444                {
     
    428458
    429459            default:
    430                 return errorGetOpt(USAGE_DEBUGVM, rc, &ValueUnion);
     460                return errorGetOpt(rc, &ValueUnion);
    431461        }
    432462    }
    433463
    434464    if (!aBstrNames.size())
    435         return errorSyntax(USAGE_DEBUGVM, "The setregisters sub-command takes at least one register name");
     465        return errorSyntax("The setregisters sub-command takes at least one register name");
    436466
    437467    /*
     
    590620                    rcExit = handleDebugVM_Show_LogRelSettings(pDebugger, fFlags);
    591621                else
    592                     rcExit = errorSyntax(USAGE_DEBUGVM, "The show sub-command has no idea what '%s' might be", ValueUnion.psz);
     622                    rcExit = errorSyntax("The show sub-command has no idea what '%s' might be", ValueUnion.psz);
    593623                if (rcExit != RTEXITCODE_SUCCESS)
    594624                    return rcExit;
     
    597627
    598628            default:
    599                 return errorGetOpt(USAGE_DEBUGVM, rc, &ValueUnion);
     629                return errorGetOpt(rc, &ValueUnion);
    600630        }
    601631    }
     
    640670            case 'p':
    641671                if (pszPattern)
    642                     return errorSyntax(USAGE_DEBUGVM, "Multiple --pattern options are not permitted");
     672                    return errorSyntax("Multiple --pattern options are not permitted");
    643673                pszPattern = ValueUnion.psz;
    644674                break;
     
    649679
    650680            default:
    651                 return errorGetOpt(USAGE_DEBUGVM, rc, &ValueUnion);
     681                return errorGetOpt(rc, &ValueUnion);
    652682        }
    653683    }
    654684
    655685    if (fReset && fWithDescriptions)
    656         return errorSyntax(USAGE_DEBUGVM, "The --reset and --descriptions options does not mix");
     686        return errorSyntax("The --reset and --descriptions options does not mix");
    657687
    658688    /*
     
    685715     */
    686716    if (pArgs->argc < 2)
    687         return errorSyntax(USAGE_DEBUGVM, "Too few parameters");
     717        return errorNoSubcommand();
    688718    ComPtr<IMachine> ptrMachine;
    689719    CHECK_ERROR2I_RET(pArgs->virtualBox, FindMachine(com::Bstr(pArgs->argv[0]).raw(), ptrMachine.asOutParam()), RTEXITCODE_FAILURE);
     
    708738                 */
    709739                const char *pszSubCmd = pArgs->argv[1];
    710                 if (!strcmp(pszSubCmd, "dumpguestcore"))
     740                if (!strcmp(pszSubCmd, "dumpvmcore"))
     741                {
     742                    setCurrentSubcommand(HELP_SCOPE_DEBUGVM_DUMPVMCORE);
    711743                    rcExit = handleDebugVM_DumpVMCore(pArgs, ptrDebugger);
     744                }
    712745                else if (!strcmp(pszSubCmd, "getregisters"))
     746                {
     747                    setCurrentSubcommand(HELP_SCOPE_DEBUGVM_GETREGISTERS);
    713748                    rcExit = handleDebugVM_GetRegisters(pArgs, ptrDebugger);
     749                }
    714750                else if (!strcmp(pszSubCmd, "info"))
     751                {
     752                    setCurrentSubcommand(HELP_SCOPE_DEBUGVM_INFO);
    715753                    rcExit = handleDebugVM_Info(pArgs, ptrDebugger);
     754                }
    716755                else if (!strcmp(pszSubCmd, "injectnmi"))
     756                {
     757                    setCurrentSubcommand(HELP_SCOPE_DEBUGVM_INJECTNMI);
    717758                    rcExit = handleDebugVM_InjectNMI(pArgs, ptrDebugger);
     759                }
    718760                else if (!strcmp(pszSubCmd, "log"))
     761                {
     762                    setCurrentSubcommand(HELP_SCOPE_DEBUGVM_LOG);
    719763                    rcExit = handleDebugVM_LogXXXX(pArgs, ptrDebugger, pszSubCmd);
     764                }
    720765                else if (!strcmp(pszSubCmd, "logdest"))
     766                {
     767                    setCurrentSubcommand(HELP_SCOPE_DEBUGVM_LOGDEST);
    721768                    rcExit = handleDebugVM_LogXXXX(pArgs, ptrDebugger, pszSubCmd);
     769                }
    722770                else if (!strcmp(pszSubCmd, "logflags"))
     771                {
     772                    setCurrentSubcommand(HELP_SCOPE_DEBUGVM_LOGFLAGS);
    723773                    rcExit = handleDebugVM_LogXXXX(pArgs, ptrDebugger, pszSubCmd);
     774                }
    724775                else if (!strcmp(pszSubCmd, "osdetect"))
     776                {
     777                    setCurrentSubcommand(HELP_SCOPE_DEBUGVM_OSDETECT);
    725778                    rcExit = handleDebugVM_OSDetect(pArgs, ptrDebugger);
     779                }
    726780                else if (!strcmp(pszSubCmd, "osinfo"))
     781                {
     782                    setCurrentSubcommand(HELP_SCOPE_DEBUGVM_OSINFO);
    727783                    rcExit = handleDebugVM_OSInfo(pArgs, ptrDebugger);
     784                }
    728785                else if (!strcmp(pszSubCmd, "osdmesg"))
     786                {
     787                    setCurrentSubcommand(HELP_SCOPE_DEBUGVM_OSDMESG);
    729788                    rcExit = handleDebugVM_OSDmesg(pArgs, ptrDebugger);
     789                }
    730790                else if (!strcmp(pszSubCmd, "setregisters"))
     791                {
     792                    setCurrentSubcommand(HELP_SCOPE_DEBUGVM_SETREGISTERS);
    731793                    rcExit = handleDebugVM_SetRegisters(pArgs, ptrDebugger);
     794                }
    732795                else if (!strcmp(pszSubCmd, "show"))
     796                {
     797                    setCurrentSubcommand(HELP_SCOPE_DEBUGVM_SHOW);
    733798                    rcExit = handleDebugVM_Show(pArgs, ptrDebugger);
     799                }
    734800                else if (!strcmp(pszSubCmd, "statistics"))
     801                {
     802                    setCurrentSubcommand(HELP_SCOPE_DEBUGVM_STATISTICS);
    735803                    rcExit = handleDebugVM_Statistics(pArgs, ptrDebugger);
     804                }
    736805                else
    737                     errorSyntax(USAGE_DEBUGVM, "Invalid parameter '%s'", pArgs->argv[1]);
     806                    errorUnknownSubcommand(pszSubCmd);
    738807            }
    739808        }
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp

    r56366 r56466  
    399399                return RTEXITCODE_SUCCESS;
    400400            }
     401            else if (!strcmp(papszArgs[i], "--"))
     402                break;
    401403
    402404    return errorSyntax("Too many parameters");
     
    13261328                     "                            --ip<ipv4> [--netmask<ipv4> (def: 255.255.255.0)] |\n"
    13271329                     "                            --ipv6<ipv6> [--netmasklengthv6<length> (def: 64)]]\n"
    1328 # if !defined(RT_OS_SOLARIS)
     1330# if !defined(RT_OS_SOLARIS) || defined(VBOX_ONLY_DOCS)
    13291331                     "                            create |\n"
    13301332                     "                            remove <name>\n"
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