VirtualBox

Changeset 12462 in vbox for trunk/src


Ignore:
Timestamp:
Sep 15, 2008 1:22:28 PM (16 years ago)
Author:
vboxsync
Message:

Debugger: made tstVBoxDbg useful again.

Location:
trunk/src/VBox/Debugger
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Debugger/VBoxDbg.cpp

    r12424 r12462  
    6868
    6969
    70 
    71 /**
    72  * Creates the debugger GUI.
    73  *
    74  * @returns VBox status code.
    75  * @param   pSession    The Virtual Box session.
    76  * @param   ppGui       Where to store the pointer to the debugger instance.
    77  * @param   ppGuiVT     Where to store the virtual method table pointer.
    78  *                      Optional.
    79  */
    80 DBGDECL(int) DBGGuiCreate(ISession *pSession, PDBGGUI *ppGui, PCDBGGUIVT *ppGuiVT)
    81 {
     70/**
     71 * Internal worker for DBGGuiCreate and DBGGuiCreateForVM.
     72 *
     73 * @returns VBox status code.
     74 * @param   pSession    The ISession interface. (DBGGuiCreate)
     75 * @param   pVM         The VM handle. (DBGGuiCreateForVM)
     76 * @param   ppGui       See DBGGuiCreate.
     77 * @param   ppGuiVT     See DBGGuiCreate.
     78 */
     79static int dbgGuiCreate(ISession *pSession, PVM pVM, PDBGGUI *ppGui, PCDBGGUIVT *ppGuiVT)
     80{
     81    /*
     82     * Allocate and initialize the Debugger GUI handle.
     83     */
    8284    PDBGGUI pGui = (PDBGGUI)RTMemAlloc(sizeof(*pGui));
    8385    if (!pGui)
     
    8688    pGui->pVBoxDbgGui = new VBoxDbgGui();
    8789
    88     int rc = pGui->pVBoxDbgGui->init(pSession);
     90    int rc;
     91    if (pSession)
     92        rc = pGui->pVBoxDbgGui->init(pSession);
     93    else
     94        rc = pGui->pVBoxDbgGui->init(pVM);
    8995    if (VBOX_SUCCESS(rc))
    9096    {
     97        /*
     98         * Successfully initialized.
     99         */
    91100        *ppGui = pGui;
    92101        if (ppGuiVT)
     
    95104    }
    96105
     106    /*
     107     * Failed, cleanup.
     108     */
    97109    delete pGui->pVBoxDbgGui;
    98110    RTMemFree(pGui);
     
    105117
    106118/**
     119 * Creates the debugger GUI.
     120 *
     121 * @returns VBox status code.
     122 * @param   pSession    The Virtual Box session.
     123 * @param   ppGui       Where to store the pointer to the debugger instance.
     124 * @param   ppGuiVT     Where to store the virtual method table pointer.
     125 *                      Optional.
     126 */
     127DBGDECL(int) DBGGuiCreate(ISession *pSession, PDBGGUI *ppGui, PCDBGGUIVT *ppGuiVT)
     128{
     129    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     130    return dbgGuiCreate(pSession, NULL, ppGui, ppGuiVT);
     131}
     132
     133
     134/**
     135 * Creates the debugger GUI given a VM handle.
     136 *
     137 * @returns VBox status code.
     138 * @param   pVM         The VM handle.
     139 * @param   ppGui       Where to store the pointer to the debugger instance.
     140 * @param   ppGuiVT     Where to store the virtual method table pointer.
     141 *                      Optional.
     142 */
     143DBGDECL(int) DBGGuiCreateForVM(PVM pVM, PDBGGUI *ppGui, PCDBGGUIVT *ppGuiVT)
     144{
     145    AssertPtrReturn(pVM, VERR_INVALID_POINTER);
     146    return dbgGuiCreate(NULL, pVM, ppGui, ppGuiVT);
     147}
     148
     149
     150/**
    107151 * Destroys the debugger GUI.
    108152 *
  • trunk/src/VBox/Debugger/VBoxDbgGui.cpp

    r12183 r12462  
    3333# include <qdesktopwidget.h>
    3434# include <qapplication.h>
    35 #endif 
     35#endif
    3636
    3737
     
    4545
    4646
     47int VBoxDbgGui::init(PVM pVM)
     48{
     49    /*
     50     * Set the VM handle and update the desktop size.
     51     */
     52    m_pVM = pVM;
     53    updateDesktopSize();
     54
     55    return VINF_SUCCESS;
     56}
     57
     58
    4759int VBoxDbgGui::init(ISession *pSession)
    4860{
    49     /*
    50      * Update the desktop size first.
    51      */
    52     updateDesktopSize();
     61    int rc = VERR_GENERAL_FAILURE;
    5362
    5463    /*
     
    7483                if (SUCCEEDED(hrc))
    7584                {
    76                     m_pVM = (PVM)(uintptr_t)ullVM;
    77                     return VINF_SUCCESS;
     85                    rc = init((PVM)(uintptr_t)ullVM);
     86                    if (RT_SUCCESS(rc))
     87                        return rc;
    7888                }
    7989
     
    8696    }
    8797
    88     return VERR_GENERAL_FAILURE;
     98    return rc;
    8999}
    90100
     
    143153#else
    144154        m_pDbgStats = new VBoxDbgStats(m_pVM);
    145 #endif 
     155#endif
    146156        connect(m_pDbgStats, SIGNAL(destroyed(QObject *)), this, SLOT(notifyChildDestroyed(QObject *)));
    147157        repositionStatistics();
     
    185195        if (fResize)
    186196            /* Resize it to cover the space down to the bottom of the desktop. */
    187             resizeWidget(m_pDbgConsole, m_cx, m_cyDesktop - m_cy - m_y + m_yDesktop);
     197            resizeWidget(m_pDbgConsole, RT_MAX(m_cx, 32), m_cyDesktop - m_cy - m_y + m_yDesktop);
    188198    }
    189199}
  • trunk/src/VBox/Debugger/VBoxDbgGui.h

    r12180 r12462  
    5151
    5252    /**
    53      * Initializes a VBoxDbgGui object.
     53     * Initializes a VBoxDbgGui object by ISession.
    5454     *
    5555     * @returns VBox status code.
     
    5757     */
    5858    int init(ISession *pSession);
     59
     60    /**
     61     * Initializes a VBoxDbgGui object by VM handle.
     62     *
     63     * @returns VBox status code.
     64     * @param   pVM         The VM handle.
     65     */
     66    int init(PVM pVM);
    5967
    6068    /**
  • trunk/src/VBox/Debugger/testcase/tstVBoxDbg.cpp

    r11822 r12462  
    2525*******************************************************************************/
    2626#include <qapplication.h>
    27 #include <VBox/dbg.h>
     27#include <VBox/dbggui.h>
    2828#include <VBox/vm.h>
    2929#include <VBox/err.h>
     
    5757         */
    5858        QApplication App(argc, argv);
    59 //        DBGGuiCreate(pVM, true, NULL);
    60         App.exec();
     59        PDBGGUI pGui;
     60        PCDBGGUIVT pGuiVT;
     61        rc = DBGGuiCreateForVM(pVM, &pGui, &pGuiVT);
     62        if (RT_SUCCESS(rc))
     63        {
     64            RTPrintf(TESTCASE ": calling pfnShowCommandLine...\n");
     65            rc = pGuiVT->pfnShowCommandLine(pGui);
     66            if (RT_FAILURE(rc))
     67            {
     68                RTPrintf(TESTCASE ": error: pfnShowCommandLine failed! rc=%Rrc\n", rc);
     69                cErrors++;
     70            }
     71
     72#if 0
     73            RTPrintf(TESTCASE ": calling pfnShowStatistics...\n");
     74            pGuiVT->pfnShowStatistics(pGui);
     75            if (RT_FAILURE(rc))
     76            {
     77                RTPrintf(TESTCASE ": error: pfnShowStatistics failed! rc=%Rrc\n", rc);
     78                cErrors++;
     79            }
     80#endif
     81
     82            RTPrintf(TESTCASE ": calling App.exec()...\n");
     83            App.exec();
     84        }
     85        else
     86        {
     87            RTPrintf(TESTCASE ": error: DBGGuiCreateForVM failed! rc=%Rrc\n", rc);
     88            cErrors++;
     89        }
    6190
    6291        /*
     
    6695        if (!VBOX_SUCCESS(rc))
    6796        {
    68             RTPrintf(TESTCASE ": error: failed to destroy vm! rc=%d\n", rc);
     97            RTPrintf(TESTCASE ": error: failed to destroy vm! rc=%Rrc\n", rc);
    6998            cErrors++;
    7099        }
     
    72101    else
    73102    {
    74         RTPrintf(TESTCASE ": fatal error: failed to create vm! rc=%d\n", rc);
     103        RTPrintf(TESTCASE ": fatal error: failed to create vm! rc=%Rrc\n", rc);
    75104        cErrors++;
    76105    }
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