Commit 3eef8a43 authored by hjk's avatar hjk

debugger: more state work

parent cb68ec66
......@@ -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();
......
......@@ -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)
......
......@@ -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);
......
......@@ -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
......
......@@ -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);
......
......@@ -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);
......
......@@ -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")
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment