summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/debugger/debuggermanager.cpp9
-rw-r--r--src/plugins/debugger/debuggermanager.h1
-rw-r--r--src/plugins/debugger/debuggerplugin.cpp2
-rw-r--r--src/plugins/debugger/gdbengine.cpp4
-rw-r--r--src/plugins/debugger/registerhandler.h1
-rw-r--r--src/plugins/projectexplorer/session.cpp10
6 files changed, 21 insertions, 6 deletions
diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp
index 561397ed36..971eb1e8d9 100644
--- a/src/plugins/debugger/debuggermanager.cpp
+++ b/src/plugins/debugger/debuggermanager.cpp
@@ -1053,6 +1053,15 @@ void DebuggerManager::sessionLoaded()
loadSessionData();
}
+void DebuggerManager::sessionUnloaded()
+{
+ cleanupViews();
+ if (m_engine)
+ m_engine->shutdown();
+ setStatus(DebuggerProcessNotReady);
+ setBusyCursor(false);
+}
+
void DebuggerManager::aboutToSaveSession()
{
saveSessionData();
diff --git a/src/plugins/debugger/debuggermanager.h b/src/plugins/debugger/debuggermanager.h
index 4d9351d951..fb6bc9e36c 100644
--- a/src/plugins/debugger/debuggermanager.h
+++ b/src/plugins/debugger/debuggermanager.h
@@ -233,6 +233,7 @@ public slots:
void updateWatchModel();
void sessionLoaded();
+ void sessionUnloaded();
void aboutToSaveSession();
void assignValueInDebugger();
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 1046a9307b..2ecd00ffc2 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -752,6 +752,8 @@ bool DebuggerPlugin::initialize(const QStringList &arguments, QString *errorMess
m_manager, SLOT(sessionLoaded()));
connect(sessionManager(), SIGNAL(aboutToSaveSession()),
m_manager, SLOT(aboutToSaveSession()));
+ connect(sessionManager(), SIGNAL(sessionUnloaded()),
+ m_manager, SLOT(sessionUnloaded()));
// EditorManager
QObject *editorManager = core->editorManager();
diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp
index 600a399f25..17cb99081a 100644
--- a/src/plugins/debugger/gdbengine.cpp
+++ b/src/plugins/debugger/gdbengine.cpp
@@ -398,6 +398,10 @@ void GdbEngine::handleResponse(const QByteArray &buff)
// Archer has "{id="28902"}"
} else if (asyncClass == "thread-created") {
//"{id="1",group-id="28902"}"
+ } else if (asyncClass == "thread-group-exited") {
+ // Archer has "{id="28902"}"
+ } else if (asyncClass == "thread-exited") {
+ //"{id="1",group-id="28902"}"
#ifdef Q_OS_MAC
} else if (asyncClass == "shlibs-updated") {
// MAC announces updated libs
diff --git a/src/plugins/debugger/registerhandler.h b/src/plugins/debugger/registerhandler.h
index 8c38c1544e..57e138b2ed 100644
--- a/src/plugins/debugger/registerhandler.h
+++ b/src/plugins/debugger/registerhandler.h
@@ -54,7 +54,6 @@ class RegisterHandler : public QAbstractTableModel
public:
RegisterHandler(QObject *parent = 0);
- void sessionClosed();
QAbstractItemModel *model() { return this; }
bool isEmpty() const; // nothing known so far?
diff --git a/src/plugins/projectexplorer/session.cpp b/src/plugins/projectexplorer/session.cpp
index 54d46e2e5b..ad09041e9c 100644
--- a/src/plugins/projectexplorer/session.cpp
+++ b/src/plugins/projectexplorer/session.cpp
@@ -996,16 +996,16 @@ void SessionManager::removeProjects(QList<Project *> remove)
void SessionManager::setValue(const QString &name, const QVariant &value)
{
- m_file->m_values.insert(name, value);
+ if (m_file)
+ m_file->m_values.insert(name, value);
}
QVariant SessionManager::value(const QString &name)
{
- QMap<QString, QVariant>::const_iterator it = m_file->m_values.find(name);
- if (it != m_file->m_values.constEnd())
- return *it;
- else
+ if (!m_file)
return QVariant();
+ QMap<QString, QVariant>::const_iterator it = m_file->m_values.find(name);
+ return (it == m_file->m_values.constEnd()) ? QVariant() : *it;
}
QString SessionManager::activeSession() const