Commit 038d943f authored by hjk's avatar hjk
Browse files

debugger: fix shutdown by pressing "[x]" in the output pane

parent ddb424a1
...@@ -186,7 +186,7 @@ private: ...@@ -186,7 +186,7 @@ private:
bool CommandHandler::setData(const QModelIndex &, const QVariant &value, int role) bool CommandHandler::setData(const QModelIndex &, const QVariant &value, int role)
{ {
QTC_ASSERT(m_engine, return false); QTC_ASSERT(m_engine, qDebug() << value << role; return false);
m_engine->handleCommand(role, value); m_engine->handleCommand(role, value);
return true; return true;
} }
......
...@@ -251,7 +251,7 @@ public slots: ...@@ -251,7 +251,7 @@ public slots:
void startSuccessful(); void startSuccessful();
void startFailed(); void startFailed();
void raiseApplication(); void raiseApplication();
void quitDebugger() { exitDebugger(); } virtual void quitDebugger() { exitDebugger(); } // called by DebuggerRunControl
protected: protected:
void setState(DebuggerState state, bool forced = false); void setState(DebuggerState state, bool forced = false);
......
...@@ -510,7 +510,7 @@ void DebuggerRunControl::stop() ...@@ -510,7 +510,7 @@ void DebuggerRunControl::stop()
{ {
m_running = false; m_running = false;
QTC_ASSERT(m_engine, return); QTC_ASSERT(m_engine, return);
m_engine->exitDebugger(); m_engine->quitDebugger();
} }
void DebuggerRunControl::debuggingFinished() void DebuggerRunControl::debuggingFinished()
......
...@@ -1620,7 +1620,8 @@ QString GdbEngine::cleanupFullName(const QString &fileName) ...@@ -1620,7 +1620,8 @@ QString GdbEngine::cleanupFullName(const QString &fileName)
void GdbEngine::shutdown() void GdbEngine::shutdown()
{ {
showMessage(_("INITIATE GDBENGINE SHUTDOWN")); showMessage(_("INITIATE GDBENGINE SHUTDOWN IN STATE %1, PROC: %2")
.arg(state()).arg(gdbProc()->state()));
if (m_progress) { if (m_progress) {
m_progress->setProgressValue(90); m_progress->setProgressValue(90);
m_progress->reportCanceled(); m_progress->reportCanceled();
...@@ -1726,7 +1727,19 @@ void GdbEngine::exitDebugger() ...@@ -1726,7 +1727,19 @@ void GdbEngine::exitDebugger()
{ {
disconnectDebuggingHelperActions(); disconnectDebuggingHelperActions();
shutdown(); shutdown();
//gdbProc()->kill(); }
void GdbEngine::quitDebugger()
{
// FIXME: The problem here is that the "kill" send in the shutdown()
// procedure might not receive a response anymore. So we need a way
// to force it down. On the other hand, there could be an answer,
// and regular the inferior shutdown procedure could take a while.
// And the RunControl::stop() is called synchroneously.
disconnectDebuggingHelperActions();
shutdown();
initializeVariables();
setState(DebuggerNotReady);
} }
int GdbEngine::currentFrame() const int GdbEngine::currentFrame() const
......
...@@ -108,6 +108,7 @@ private: ////////// General Interface ////////// ...@@ -108,6 +108,7 @@ private: ////////// General Interface //////////
virtual void startDebugger(); virtual void startDebugger();
virtual unsigned debuggerCapabilities() const; virtual unsigned debuggerCapabilities() const;
virtual void exitDebugger(); virtual void exitDebugger();
virtual void quitDebugger();
virtual void detachDebugger(); virtual void detachDebugger();
virtual void shutdown(); virtual void shutdown();
......
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