debugger: more state work

This commit is contained in:
hjk
2010-07-12 15:39:22 +02:00
parent cb68ec6656
commit 3eef8a43c0
7 changed files with 24 additions and 13 deletions

View File

@@ -1223,7 +1223,9 @@ void DebuggerEnginePrivate::doShutdownEngine()
{
SDEBUG(Q_FUNC_INFO);
QTC_ASSERT(state() == InferiorShutdownOk
|| state() == InferiorShutdownFailed, qDebug() << state());
|| state() == InferiorShutdownFailed
|| state() == InferiorSetupFailed,
qDebug() << state());
m_targetState = DebuggerFinished;
m_engine->setState(EngineShutdownRequested);
m_engine->shutdownEngine();

View File

@@ -89,8 +89,6 @@ public:
protected:
DebuggerState state() const
{ return m_engine->state(); }
void setState(DebuggerState state)
{ m_engine->setState(state); }
const DebuggerStartParameters &startParameters() const
{ return m_engine->startParameters(); }
void showMessage(const QString &msg, int channel = LogDebug, int timeout = 1)

View File

@@ -77,7 +77,11 @@ void AttachGdbAdapter::setupInferior()
void AttachGdbAdapter::runEngine()
{
QTC_ASSERT(state() == EngineRunRequested, qDebug() << state());
m_engine->notifyInferiorStopOk();
m_engine->notifyEngineRunAndInferiorStopOk();
m_engine->notifyInferiorRunRequested();
m_engine->continueInferiorInternal();
m_engine->showStatusMessage(tr("Attached to process %1.")
.arg(m_engine->inferiorPid()));
}
void AttachGdbAdapter::handleAttach(const GdbResponse &response)
@@ -87,7 +91,7 @@ void AttachGdbAdapter::handleAttach(const GdbResponse &response)
showMessage(_("INFERIOR ATTACHED"));
showMessage(msgAttachedToStoppedInferior(), StatusBar);
m_engine->handleInferiorPrepared();
m_engine->updateAll();
//m_engine->updateAll();
} else {
QString msg = QString::fromLocal8Bit(response.data.findChild("msg").data());
m_engine->notifyInferiorSetupFailed(msg);

View File

@@ -1073,7 +1073,7 @@ void GdbEngine::handleExecuteJumpToLine(const GdbResponse &response)
} else if (response.resultClass == GdbResultDone) {
// This happens on old gdb. Trigger the effect of a '*stopped'.
showStatusMessage(tr("Jumped. Stopped"));
setState(InferiorStopOk);
notifyInferiorSpontaneousStop();
handleStop1(response);
}
}
@@ -1091,7 +1091,7 @@ void GdbEngine::handleExecuteRunToLine(const GdbResponse &response)
//>122^done
gotoLocation(m_targetFrame, true);
showStatusMessage(tr("Target line hit. Stopped"));
setState(InferiorStopOk);
notifyInferiorSpontaneousStop();
handleStop1(response);
}
}
@@ -1712,7 +1712,7 @@ void GdbEngine::handleGdbExit(const GdbResponse &response)
postCommand("-gdb-exit", GdbEngine::ExitRequest, CB(handleGdbExit));
break;
case InferiorSetupRequested: // This may take some time, so just short-circuit it
setState(InferiorSetupFailed);
notifyInferiorSetupFailed();
gdbProc()->kill();
break;
case InferiorStopFailed: // Tough luck, I guess. But unreachable as of now anyway.
@@ -1725,7 +1725,13 @@ void GdbEngine::detachDebugger()
{
QTC_ASSERT(state() == InferiorStopOk, qDebug() << state());
QTC_ASSERT(startMode() != AttachCore, qDebug() << startMode());
postCommand("detach");
postCommand("detach", GdbEngine::ExitRequest, CB(handleDetach));
}
void GdbEngine::handleDetach(const GdbResponse &response)
{
Q_UNUSED(response);
QTC_ASSERT(state() == InferiorStopOk, qDebug() << state());
notifyInferiorExited();
}
@@ -1737,8 +1743,8 @@ void GdbEngine::quitDebugger()
// and regular the inferior shutdown procedure could take a while.
// And the RunControl::stop() is called synchroneously.
shutdownEngine();
initializeVariables();
setState(DebuggerNotReady);
//initializeVariables();
//setState(DebuggerNotReady);
}
int GdbEngine::currentFrame() const

View File

@@ -490,6 +490,7 @@ private: ////////// View & Data Stuff //////////
void handleDebuggingHelperEditValue(const GdbResponse &response);
void handleDebuggingHelperSetup(const GdbResponse &response);
void handleDebuggingHelperVersionCheckClassic(const GdbResponse &response);
void handleDetach(const GdbResponse &response);
Q_SLOT void createFullBacktrace();
void handleCreateFullBacktrace(const GdbResponse &response);

View File

@@ -210,7 +210,7 @@ void RemoteGdbServerAdapter::handleTargetRemote(const GdbResponse &record)
{
QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << state());
if (record.resultClass == GdbResultDone) {
setState(InferiorStopOk);
m_engine->notifyInferiorStopOk();
// gdb server will stop the remote application itself.
showMessage(_("INFERIOR STARTED"));
showMessage(msgAttachedToStoppedInferior(), StatusBar);

View File

@@ -1604,7 +1604,7 @@ void TrkGdbAdapter::handleTargetRemote(const GdbResponse &record)
{
QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << state());
if (record.resultClass == GdbResultDone) {
setState(InferiorStopOk);
m_engine->notifyInferiorStopOk();
m_engine->handleInferiorPrepared();
} else {
QString msg = tr("Connecting to TRK server adapter failed:\n")