Commit 20b9258d authored by hjk's avatar hjk

debugger: refactoring

Intergrate per-engine state tracking with the global running/stopped state.
parent 9f8d93c3
......@@ -286,19 +286,18 @@ CdbComInterfaces::CdbComInterfaces() :
// --- CdbDebugEnginePrivate
CdbDebugEnginePrivate::CdbDebugEnginePrivate(DebuggerManager *parent,
CdbDebugEnginePrivate::CdbDebugEnginePrivate(DebuggerManager *manager,
const QSharedPointer<CdbOptions> &options,
CdbDebugEngine* engine) :
m_options(options),
m_hDebuggeeProcess(0),
m_hDebuggeeThread(0),
m_breakEventMode(BreakEventHandle),
m_dumper(new CdbDumperHelper(parent, &m_cif)),
m_dumper(new CdbDumperHelper(manager, &m_cif)),
m_watchTimer(-1),
m_debugEventCallBack(engine),
m_engine(engine),
m_debuggerManager(parent),
m_debuggerManagerAccess(parent->engineInterface()),
m_debuggerManagerAccess(manager->engineInterface()),
m_currentStackTrace(0),
m_firstActivatedFrame(true),
m_mode(AttachCore)
......@@ -369,11 +368,11 @@ bool CdbDebugEnginePrivate::init(QString *errorMessage)
return true;
}
IDebuggerEngine *CdbDebugEngine::create(DebuggerManager *parent,
IDebuggerEngine *CdbDebugEngine::create(DebuggerManager *manager,
const QSharedPointer<CdbOptions> &options,
QString *errorMessage)
{
CdbDebugEngine *rc = new CdbDebugEngine(parent, options);
CdbDebugEngine *rc = new CdbDebugEngine(manager, options);
if (rc->m_d->init(errorMessage)) {
rc->syncDebuggerPaths();
return rc;
......@@ -446,7 +445,7 @@ void CdbDebugEnginePrivate::cleanStackTrace()
}
}
CdbDebugEngine::CdbDebugEngine(DebuggerManager *parent, const QSharedPointer<CdbOptions> &options) :
CdbDebugEngine::CdbDebugEngine(DebuggerManager *manager, const QSharedPointer<CdbOptions> &options) :
IDebuggerEngine(parent),
m_d(new CdbDebugEnginePrivate(parent, options, this))
{
......@@ -455,13 +454,13 @@ CdbDebugEngine::CdbDebugEngine(DebuggerManager *parent, const QSharedPointer<Cdb
connect(&m_d->m_consoleStubProc, SIGNAL(processStarted()), this, SLOT(slotConsoleStubStarted()));
connect(&m_d->m_consoleStubProc, SIGNAL(wrapperStopped()), this, SLOT(slotConsoleStubTerminated()));
connect(&m_d->m_debugOutputCallBack, SIGNAL(debuggerOutput(int,QString)),
m_d->m_debuggerManager, SLOT(showDebuggerOutput(int,QString)));
manager(), SLOT(showDebuggerOutput(int,QString)));
connect(&m_d->m_debugOutputCallBack, SIGNAL(debuggerInputPrompt(int,QString)),
m_d->m_debuggerManager, SLOT(showDebuggerInput(int,QString)));
manager(), SLOT(showDebuggerInput(int,QString)));
connect(&m_d->m_debugOutputCallBack, SIGNAL(debuggeeOutput(QString)),
m_d->m_debuggerManager, SLOT(showApplicationOutput(QString)));
manager(), SLOT(showApplicationOutput(QString)));
connect(&m_d->m_debugOutputCallBack, SIGNAL(debuggeeInputPrompt(QString)),
m_d->m_debuggerManager, SLOT(showApplicationOutput(QString)));
manager(), SLOT(showApplicationOutput(QString)));
}
CdbDebugEngine::~CdbDebugEngine()
......@@ -588,7 +587,7 @@ void CdbDebugEngine::startDebugger(const QSharedPointer<DebuggerStartParameters>
}
}
m_d->m_dumper->reset(dumperLibName, dumperEnabled);
m_d->m_debuggerManager->showStatusMessage("Starting Debugger", -1);
showStatusMessage("Starting Debugger", -1);
QString errorMessage;
bool rc = false;
bool needWatchTimer = false;
......@@ -621,7 +620,7 @@ void CdbDebugEngine::startDebugger(const QSharedPointer<DebuggerStartParameters>
break;
}
if (rc) {
m_d->m_debuggerManager->showStatusMessage(tr("Debugger running"), -1);
showStatusMessage(tr("Debugger running"), -1);
if (needWatchTimer)
startWatchTimer();
} else {
......@@ -653,13 +652,13 @@ bool CdbDebugEngine::startAttachDebugger(qint64 pid, DebuggerStartMode sm, QStri
bool CdbDebugEngine::startDebuggerWithExecutable(DebuggerStartMode sm, QString *errorMessage)
{
m_d->m_debuggerManager->showStatusMessage("Starting Debugger", -1);
showStatusMessage("Starting Debugger", -1);
DEBUG_CREATE_PROCESS_OPTIONS dbgopts;
memset(&dbgopts, 0, sizeof(dbgopts));
dbgopts.CreateFlags = DEBUG_PROCESS | DEBUG_ONLY_THIS_PROCESS;
const QSharedPointer<DebuggerStartParameters> sp = m_d->m_debuggerManager->startParameters();
const QSharedPointer<DebuggerStartParameters> sp = manager()->startParameters();
const QString filename(sp->executable);
// Set image path
const QFileInfo fi(filename);
......@@ -728,7 +727,7 @@ void CdbDebugEnginePrivate::processCreatedAttached(ULONG64 processHandle, ULONG6
// Attaching to crashed: This handshake (signalling an event) is required for
// the exception to be delivered to the debugger
if (m_mode == AttachCrashedExternal) {
const QString crashParameter = m_debuggerManager->startParameters()->crashParameter;
const QString crashParameter = manager()->startParameters()->crashParameter;
if (!crashParameter.isEmpty()) {
ULONG64 evtNr = crashParameter.toULongLong();
const HRESULT hr = m_cif.debugControl->SetNotifyEventHandle(evtNr);
......@@ -748,7 +747,7 @@ void CdbDebugEngine::processTerminated(unsigned long exitCode)
m_d->clearForRun();
m_d->setDebuggeeHandles(0, 0);
m_d->m_debuggerManagerAccess->notifyInferiorExited();
m_d->m_debuggerManager->exitDebugger();
manager()->exitDebugger();
}
// End debugging using
......@@ -1025,8 +1024,9 @@ bool CdbDebugEnginePrivate::continueInferior(QString *errorMessage)
clearForRun();
setCodeLevel();
m_engine->killWatchTimer();
m_debuggerManager->resetLocation();
m_debuggerManagerAccess->notifyInferiorRunningRequested();
manager()->resetLocation();
setState(InferiorRunningRequested);
showStatusMessage(tr("Running requested..."), 5000);
if (!continueInferiorProcess(errorMessage))
return false;
......@@ -1186,7 +1186,7 @@ void CdbDebugEngine::activateFrame(int frameIndex)
if (debugCDB)
qDebug() << Q_FUNC_INFO << frameIndex;
if (m_d->m_debuggerManager->status() != DebuggerInferiorStopped) {
if (state() != InferiorStopped) {
qWarning("WARNING %s: invoked while debuggee is running\n", Q_FUNC_INFO);
return;
}
......@@ -1215,7 +1215,7 @@ void CdbDebugEngine::activateFrame(int frameIndex)
break;
}
m_d->m_debuggerManager->gotoLocation(frame, true);
manager()->gotoLocation(frame, true);
if (oldIndex != frameIndex || m_d->m_firstActivatedFrame) {
watchHandler->beginCycle();
......@@ -1235,7 +1235,7 @@ void CdbDebugEngine::selectThread(int index)
qDebug() << Q_FUNC_INFO << index;
//reset location arrow
m_d->m_debuggerManager->resetLocation();
manager()->resetLocation();
ThreadsHandler *threadsHandler = m_d->m_debuggerManagerAccess->threadsHandler();
threadsHandler->setCurrentThread(index);
......@@ -1417,7 +1417,7 @@ void CdbDebugEngine::timerEvent(QTimerEvent* te)
const HRESULT hr = m_d->m_cif.debugControl->WaitForEvent(0, 1);
if (debugCDB)
if (debugCDB > 1 || hr != S_FALSE)
qDebug() << Q_FUNC_INFO << "WaitForEvent" << m_d->m_debuggerManager->status() << msgDebugEngineComResult(hr);
qDebug() << Q_FUNC_INFO << "WaitForEvent" << state() << msgDebugEngineComResult(hr);
switch (hr) {
case S_OK:
......@@ -1446,13 +1446,13 @@ void CdbDebugEngine::slotConsoleStubStarted()
m_d->m_debuggerManagerAccess->notifyInferiorPidChanged(appPid);
m_d->m_debuggerManagerAccess->notifyInferiorRunning();
} else {
QMessageBox::critical(m_d->m_debuggerManager->mainWindow(), tr("Debugger Error"), errorMessage);
QMessageBox::critical(manager()->mainWindow(), tr("Debugger Error"), errorMessage);
}
}
void CdbDebugEngine::slotConsoleStubError(const QString &msg)
{
QMessageBox::critical(m_d->m_debuggerManager->mainWindow(), tr("Debugger Error"), msg);
QMessageBox::critical(manager()->mainWindow(), tr("Debugger Error"), msg);
}
void CdbDebugEngine::slotConsoleStubTerminated()
......
......@@ -100,6 +100,10 @@ public:
virtual void reloadSourceFiles();
virtual void reloadFullStack() {}
DebuggerState state() const;
void setState(DebuggerState state);
void showStatusMessage(const QString &msg, int timeout = -1);
public slots:
void syncDebuggerPaths();
......
......@@ -45,7 +45,6 @@ namespace Debugger {
namespace Internal {
class DebuggerManager;
class IDebuggerManagerAccessForEngines;
class WatchHandler;
class CdbStackFrameContext;
class CdbStackTraceContext;
......@@ -161,9 +160,8 @@ struct CdbDebugEnginePrivate
QSharedPointer<CdbDumperHelper> m_dumper;
QString m_baseImagePath;
CdbDebugEngine* m_engine;
DebuggerManager *m_debuggerManager;
IDebuggerManagerAccessForEngines *m_debuggerManagerAccess;
CdbDebugEngine *m_engine;
DebuggerManager *manager() const { return m_engine->manager(); }
CdbStackTraceContext *m_currentStackTrace;
EditorToolTipCache m_editorToolTipCache;
......
......@@ -372,10 +372,9 @@ STDMETHODIMP CdbDebugEventCallback::SystemError(
}
// -----------ExceptionLoggerEventCallback
CdbExceptionLoggerEventCallback::CdbExceptionLoggerEventCallback(int logChannel,
IDebuggerManagerAccessForEngines *access) :
CdbExceptionLoggerEventCallback::CdbExceptionLoggerEventCallback(int logChannel, DebuggerManager *manager) :
m_logChannel(logChannel),
m_access(access)
m_manager(manager)
{
}
......@@ -399,7 +398,7 @@ STDMETHODIMP CdbExceptionLoggerEventCallback::Exception(
}
if (debugCDB)
qDebug() << Q_FUNC_INFO << '\n' << m_exceptionMessages.back();
m_access->showDebuggerOutput(m_logChannel, m_exceptionMessages.back());
m_manager->showDebuggerOutput(m_logChannel, m_exceptionMessages.back());
return S_OK;
}
......
......@@ -38,7 +38,6 @@ namespace Debugger {
namespace Internal {
class CdbDebugEngine;
class IDebuggerManagerAccessForEngines;
// Base class for event callbacks that takes care
// Active X magic. Provides base implementations with
......@@ -241,8 +240,7 @@ private:
class CdbExceptionLoggerEventCallback : public CdbDebugEventCallbackBase
{
public:
explicit CdbExceptionLoggerEventCallback(int logChannel,
IDebuggerManagerAccessForEngines *access);
CdbExceptionLoggerEventCallback(int logChannel, DebuggerManager *access);
STDMETHOD(GetInterestMask)(
THIS_
......@@ -261,7 +259,7 @@ public:
private:
const int m_logChannel;
IDebuggerManagerAccessForEngines *m_access;
DebuggerManager *m_manager;
QList<ULONG> m_exceptionCodes;
QStringList m_exceptionMessages;
};
......
......@@ -140,7 +140,7 @@ static bool createDebuggeeAscIIString(CdbComInterfaces *cif,
// the QtCored4.pdb file to be present as we need "qstrdup"
// as dummy symbol. This is ok ATM since dumpers only
// make sense for Qt apps.
static bool debuggeeLoadLibrary(IDebuggerManagerAccessForEngines *access,
static bool debuggeeLoadLibrary(DebuggerManager *manager,
CdbComInterfaces *cif,
const QString &moduleName,
QString *errorMessage)
......@@ -148,7 +148,7 @@ static bool debuggeeLoadLibrary(IDebuggerManagerAccessForEngines *access,
if (loadDebug > 1)
qDebug() << Q_FUNC_INFO << moduleName;
// Try to ignore the breakpoints
CdbExceptionLoggerEventCallback exLogger(LogWarning, access);
CdbExceptionLoggerEventCallback exLogger(LogWarning, manager);
EventCallbackRedirector eventRedir(cif->debugClient, &exLogger);
// Make a call to LoadLibraryA. First, reserve memory in debugger
// and copy name over.
......@@ -221,7 +221,6 @@ CdbDumperHelper::CdbDumperHelper(DebuggerManager *manager,
m_tryInjectLoad(true),
m_state(NotLoaded),
m_manager(manager),
m_access(manager),
m_cif(cif),
m_inBufferAddress(0),
m_inBufferSize(0),
......@@ -240,7 +239,7 @@ void CdbDumperHelper::disable()
{
if (loadDebug)
qDebug() << Q_FUNC_INFO;
m_access->showDebuggerOutput(LogMisc, QCoreApplication::translate("Debugger::Internal::CdbDumperHelper", "Disabling dumpers due to debuggee crash..."));
m_manager->showDebuggerOutput(LogMisc, QCoreApplication::translate("Debugger::Internal::CdbDumperHelper", "Disabling dumpers due to debuggee crash..."));
m_state = Disabled;
}
......@@ -287,7 +286,7 @@ void CdbDumperHelper::moduleLoadHook(const QString &module, HANDLE debuggeeHandl
} else {
m_state = InjectLoadFailed;
// Ok, try call loading...
m_access->showDebuggerOutput(LogMisc, msgLoadFailed(m_library, true, errorMessage));
m_manager->showDebuggerOutput(LogMisc, msgLoadFailed(m_library, true, errorMessage));
}
}
break;
......@@ -295,7 +294,7 @@ void CdbDumperHelper::moduleLoadHook(const QString &module, HANDLE debuggeeHandl
// check if gdbmacros.dll loaded
if (module.contains(QLatin1String(dumperModuleNameC), Qt::CaseInsensitive)) {
m_state = Loaded;
m_access->showDebuggerOutput(LogMisc, msgLoadSucceeded(m_library, true));
m_manager->showDebuggerOutput(LogMisc, msgLoadSucceeded(m_library, true));
}
break;
}
......@@ -317,7 +316,7 @@ CdbDumperHelper::CallLoadResult CdbDumperHelper::initCallLoad(QString *errorMess
if (modules.filter(QLatin1String(qtCoreModuleNameC), Qt::CaseInsensitive).isEmpty())
return CallLoadNoQtApp;
// Try to load
if (!debuggeeLoadLibrary(m_access, m_cif, m_library, errorMessage))
if (!debuggeeLoadLibrary(m_manager, m_cif, m_library, errorMessage))
return CallLoadError;
return CallLoadOk;
}
......@@ -342,17 +341,17 @@ bool CdbDumperHelper::ensureInitialized(QString *errorMessage)
switch (initCallLoad(errorMessage)) {
case CallLoadOk:
case CallLoadAlreadyLoaded:
m_access->showDebuggerOutput(LogMisc, msgLoadSucceeded(m_library, false));
m_manager->showDebuggerOutput(LogMisc, msgLoadSucceeded(m_library, false));
m_state = Loaded;
break;
case CallLoadError:
*errorMessage = msgLoadFailed(m_library, false, *errorMessage);
m_access->showDebuggerOutput(LogError, *errorMessage);
m_access->showQtDumperLibraryWarning(*errorMessage);
m_manager->showDebuggerOutput(LogError, *errorMessage);
m_manager->showQtDumperLibraryWarning(*errorMessage);
m_state = Disabled; // No message here, no point in retrying
return false;
case CallLoadNoQtApp:
m_access->showDebuggerOutput(LogMisc, QCoreApplication::translate("Debugger::Internal::CdbDumperHelper", "The debuggee does not appear to be Qt application."));
m_manager->showDebuggerOutput(LogMisc, QCoreApplication::translate("Debugger::Internal::CdbDumperHelper", "The debuggee does not appear to be Qt application."));
m_state = Disabled; // No message here
return true;
}
......@@ -364,14 +363,14 @@ bool CdbDumperHelper::ensureInitialized(QString *errorMessage)
m_manager->showStatusMessage(QCoreApplication::translate("Debugger::Internal::CdbDumperHelper", "Initializing dumpers..."), 10000);
const bool ok = initResolveSymbols(errorMessage) && initKnownTypes(errorMessage);
if (ok) {
m_access->showDebuggerOutput(LogMisc, QCoreApplication::translate("Debugger::Internal::CdbDumperHelper", "Custom dumper library initialized."));
m_access->showDebuggerOutput(LogMisc, m_helper.toString());
m_manager->showDebuggerOutput(LogMisc, QCoreApplication::translate("Debugger::Internal::CdbDumperHelper", "Custom dumper library initialized."));
m_manager->showDebuggerOutput(LogMisc, m_helper.toString());
m_state = Initialized;
} else {
m_state = Disabled; // No message here
*errorMessage = QCoreApplication::translate("Debugger::Internal::CdbDumperHelper", "The custom dumper library could not be initialized: %1").arg(*errorMessage);
m_access->showDebuggerOutput(LogMisc, *errorMessage);
m_access->showQtDumperLibraryWarning(*errorMessage);
m_manager->showDebuggerOutput(LogMisc, *errorMessage);
m_manager->showQtDumperLibraryWarning(*errorMessage);
}
return ok;
}
......@@ -479,7 +478,7 @@ bool CdbDumperHelper::callDumper(const QString &callCmd, const QByteArray &inBuf
bool ignoreAccessViolation, QString *errorMessage)
{
*outDataPtr = 0;
CdbExceptionLoggerEventCallback exLogger(LogWarning, m_access);
CdbExceptionLoggerEventCallback exLogger(LogWarning, m_manager);
EventCallbackRedirector eventRedir(m_cif->debugClient, &exLogger);
// write input buffer
if (!inBuffer.isEmpty()) {
......@@ -574,7 +573,7 @@ CdbDumperHelper::DumpResult CdbDumperHelper::dumpType(const WatchData &wd, bool
// Ensure types are parsed and known.
if (!ensureInitialized(errorMessage)) {
*errorMessage = msgDumpFailed(wd, errorMessage);
m_access->showDebuggerOutput(LogError, *errorMessage);
m_manager->showDebuggerOutput(LogError, *errorMessage);
return DumpError;
}
......@@ -591,7 +590,7 @@ CdbDumperHelper::DumpResult CdbDumperHelper::dumpType(const WatchData &wd, bool
const QString message = QCoreApplication::translate("Debugger::Internal::CdbDumperHelper",
"Querying dumpers for '%1'/'%2' (%3)").
arg(wd.name, wd.exp, wd.type);
m_access->showDebuggerOutput(LogMisc, message);
m_manager->showDebuggerOutput(LogMisc, message);
const DumpExecuteResult der = executeDump(wd, td, dumpChildren, result, errorMessage);
if (der == DumpExecuteOk)
......@@ -604,7 +603,7 @@ CdbDumperHelper::DumpResult CdbDumperHelper::dumpType(const WatchData &wd, bool
m_failedTypes.push_back(wd.type);
// log error
*errorMessage = msgDumpFailed(wd, errorMessage);
m_access->showDebuggerOutput(LogWarning, *errorMessage);
m_manager->showDebuggerOutput(LogWarning, *errorMessage);
return DumpError;
}
......
......@@ -40,7 +40,6 @@ namespace Debugger {
namespace Internal {
struct CdbComInterfaces;
class IDebuggerManagerAccessForEngines;
class DebuggerManager;
/* For code clarity, all the stuff related to custom dumpers goes here.
......@@ -121,7 +120,6 @@ private:
const bool m_tryInjectLoad;
State m_state;
DebuggerManager *m_manager;
IDebuggerManagerAccessForEngines *m_access;
CdbComInterfaces *m_cif;
QString m_library;
......
......@@ -59,6 +59,66 @@ namespace Internal {
enum { debug = 0 };
}
} // namespace Constants
namespace Internal {
enum DebuggerState
{
DebuggerNotReady, // Debugger not started
EngineStarting, // Engine starts
AdapterStarting,
AdapterStarted,
AdapterStartFailed,
InferiorPreparing,
InferiorPrepared,
InferiorPreparationFailed,
InferiorStarting,
// InferiorStarted, // That's either InferiorRunningRequested or InferiorStopped
InferiorStartFailed,
InferiorRunningRequested, // Debuggee requested to run
InferiorRunning, // Debuggee running
InferiorStopping, // Debuggee running, stop requested
InferiorStopped, // Debuggee stopped
InferiorStopFailed, // Debuggee stopped
InferiorShuttingDown,
InferiorShutDown,
InferiorShutdownFailed,
AdapterShuttingDown,
//AdapterShutDown, // use DebuggerNotReady
AdapterShutdownFailed,
};
enum DebuggerStartMode
{
NoStartMode,
StartInternal, // Start current start project's binary
StartExternal, // Start binary found in file system
AttachExternal, // Attach to running process by process id
AttachCrashedExternal, // Attach to crashed process by process id
AttachTcf, // Attach to a running Target Communication Framework agent
AttachCore, // Attach to a core file
StartRemote // Start and attach to a remote process
};
enum LogChannel
{
LogInput, // Used for user input
LogOutput,
LogWarning,
LogError,
LogStatus, // Used for status changed messages
LogTime, // Used for time stamp messages
LogDebug,
LogMisc
};
} // namespace Internal
} // namespace Debugger
#endif // DEBUGGERCONSTANTS_H
......
......@@ -92,6 +92,48 @@
# define STATE_DEBUG(s)
#endif
// Note: the Debugger process itself is referred to as 'Debugger',
// whereas the debugged process is referred to as 'Inferior'.
//
// 0 == DebuggerNotReady
// |
// EngineStarting
// |
// AdapterStarting --> AdapterStartFailed --> 0
// |
// AdapterStarted
// |
// InferiorStarting --> InferiorStartFailed --> 0
// | |
// | |
// InferiorStopped |
// | |
// | <--------
// | .------------------------------------.
// | v |
// InferiorRunningRequested |
// | |
// InferiorRunning --> 1 (normal exit) |
// | |
// InferiorStopping |
// | |
// InferiorStopped --> 1 |
// | |
// `---------------------------------------'
//
// 1 == InferiorShuttingDown -> InferiorShutdownFailed
// |
// InferiorShutDown
// |
// AdapterShuttingDown -> AdapterShutdownFailed --> 0
// |
// 0
//
// Allowed actions:
// [R] : Run
// [C] : Continue
// [N] : Step, Next
namespace Debugger {
namespace Internal {
......@@ -134,21 +176,31 @@ static const QString tooltipIName = "tooltip";
static const char *stateName(int s)
{
#define SN(x) case x: return #x;
switch (s) {
case DebuggerProcessNotReady:
return "DebuggerProcessNotReady";
case DebuggerProcessStartingUp:
return "DebuggerProcessStartingUp";
case DebuggerInferiorRunningRequested:
return "DebuggerInferiorRunningRequested";
case DebuggerInferiorRunning:
return "DebuggerInferiorRunning";
case DebuggerInferiorStopRequested:
return "DebuggerInferiorStopRequested";
case DebuggerInferiorStopped:
return "DebuggerInferiorStopped";
SN(DebuggerNotReady)
SN(EngineStarting)
SN(AdapterStarting)
SN(AdapterStarted)
SN(AdapterStartFailed)
SN(InferiorPreparing)
SN(InferiorPrepared)
SN(InferiorPreparationFailed)
SN(InferiorStarting)
SN(InferiorStartFailed)
SN(InferiorRunningRequested)
SN(InferiorRunning)
SN(InferiorStopping)
SN(InferiorStopped)
SN(InferiorStopFailed)
SN(InferiorShuttingDown)
SN(InferiorShutDown)
SN(InferiorShutdownFailed)
SN(AdapterShuttingDown)
SN(AdapterShutdownFailed)
}
return "<unknown>";
#undef SN
}
......@@ -214,7 +266,7 @@ DebuggerManager::~DebuggerManager()
void DebuggerManager::init()
{
m_status = -1;
m_state = DebuggerState(-1);
m_busy = false;
m_modulesHandler = 0;
......@@ -443,7 +495,7 @@ void DebuggerManager::init()
localsAndWatchers->setStretchFactor(2, 1);
m_watchDock = m_mainWindow->addDockForWidget(localsAndWatchers);
setStatus(DebuggerProcessNotReady);
setState(DebuggerNotReady);
}
QList<Core::IOptionsPage*> DebuggerManager::initializeEngines(unsigned enabledTypeFlags)
......@@ -477,11 +529,6 @@ IDebuggerEngine *DebuggerManager::engine()
return m_engine;
}
IDebuggerManagerAccessForEngines *DebuggerManager::engineInterface()
{
return this;
}
void DebuggerManager::createNewDock(QWidget *widget)
{
QDockWidget *dockWidget = new QDockWidget(widget->windowTitle(), m_mainWindow);
......@@ -546,34 +593,22 @@ void DebuggerManager::showStatusMessage(const QString &msg, int timeout)
}
}
void DebuggerManager::notifyInferiorStopRequested()
{
setStatus(DebuggerInferiorStopRequested);
showStatusMessage(