tstVBoxDbg.cpp revision a1ede5a1624d0f50c5bfc81237cf0e824f5cebac
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync/** @file
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * VBox Debugger GUI, dummy testcase.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync/*
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * Copyright (C) 2006-2007 Sun Microsystems, Inc.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * available from http://www.virtualbox.org. This file is free software;
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * you can redistribute it and/or modify it under the terms of the GNU
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * General Public License (GPL) as published by the Free Software
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * additional information or have any questions.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync/*******************************************************************************
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync* Header Files *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync*******************************************************************************/
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#include <qapplication.h>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#include <VBox/dbggui.h>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#include <VBox/vm.h>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#include <VBox/err.h>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#include <iprt/runtime.h>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#include <VBox/log.h>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#include <iprt/assert.h>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#include <iprt/runtime.h>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#include <iprt/semaphore.h>
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync#include <iprt/stream.h>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#define TESTCASE "tstVBoxDbg"
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsyncint main(int argc, char **argv)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync{
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync int cErrors = 0; /* error count. */
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync RTR3InitAndSUPLib();
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync RTPrintf(TESTCASE ": TESTING...\n");
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /*
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Create empty VM.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync PVM pVM;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync int rc = VMR3Create(NULL, NULL, NULL, NULL, &pVM);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if (VBOX_SUCCESS(rc))
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /*
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Instantiate the debugger GUI bits and run them.
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync */
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync QApplication App(argc, argv);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync PDBGGUI pGui;
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync PCDBGGUIVT pGuiVT;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync rc = DBGGuiCreateForVM(pVM, &pGui, &pGuiVT);
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync if (RT_SUCCESS(rc))
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync RTPrintf(TESTCASE ": calling pfnShowCommandLine...\n");
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync rc = pGuiVT->pfnShowCommandLine(pGui);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if (RT_FAILURE(rc))
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync RTPrintf(TESTCASE ": error: pfnShowCommandLine failed! rc=%Rrc\n", rc);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync cErrors++;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#if 1
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync RTPrintf(TESTCASE ": calling pfnShowStatistics...\n");
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync pGuiVT->pfnShowStatistics(pGui);
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync if (RT_FAILURE(rc))
9463a771c826d5b93c993eb36baaabf59be55f5evboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync RTPrintf(TESTCASE ": error: pfnShowStatistics failed! rc=%Rrc\n", rc);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync cErrors++;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#endif
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync pGuiVT->pfnAdjustRelativePos(pGui, 64, 64, 128, 64);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync RTPrintf(TESTCASE ": calling App.exec()...\n");
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync App.exec();
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync else
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync {
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync RTPrintf(TESTCASE ": error: DBGGuiCreateForVM failed! rc=%Rrc\n", rc);
a04100f955c08c93b063cf3d9c4f963637996f3cvboxsync cErrors++;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /*
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Cleanup.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync rc = VMR3Destroy(pVM);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if (!VBOX_SUCCESS(rc))
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync {
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync RTPrintf(TESTCASE ": error: failed to destroy vm! rc=%Rrc\n", rc);
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync cErrors++;
98427c0ab08697e468c26dc33ee9571308577867vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync else
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync RTPrintf(TESTCASE ": fatal error: failed to create vm! rc=%Rrc\n", rc);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync cErrors++;
0f81043c307886fc3e8d0479c4e4120b35c6d0b9vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
0f81043c307886fc3e8d0479c4e4120b35c6d0b9vboxsync /*
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Summay and exit.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if (!cErrors)
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync RTPrintf(TESTCASE ": SUCCESS\n");
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync else
0f81043c307886fc3e8d0479c4e4120b35c6d0b9vboxsync RTPrintf(TESTCASE ": FAILURE - %d errors\n", cErrors);
0f81043c307886fc3e8d0479c4e4120b35c6d0b9vboxsync return !!cErrors;
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync}
0f81043c307886fc3e8d0479c4e4120b35c6d0b9vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync