aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEl Mehdi Fekari <[email protected]>2013-10-18 19:27:31 +0200
committerMehdi Fekari <[email protected]>2013-10-22 20:14:14 +0200
commit36e6a705052c005529eb8558736e1c9df6865355 (patch)
treec322c35191fd9b93af5a9c22edf89fc8938365d8 /src
parent9f66b6384a9c42ca2ff670a82311be3a1b9d1995 (diff)
Debugger: Fix the way to register/add new debuggers
DebuggerItemManager::registerDebugger() should return the id of the added debugger in order to use it when setting a kit's debugger (addDebugger() creates and adds a copy of the passed debugger object with a unique id). The DebuggerKitInformation::setDebugger() method should set only already existing and registered debuggers. Task-number: QTCREATORBUG-10436 Change-Id: Icdcd1ed92aafe9eda44abf831aa9983dd6801980 Reviewed-by: hjk <[email protected]> Reviewed-by: Daniel Teske <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/android/androidconfigurations.cpp3
-rw-r--r--src/plugins/debugger/debuggerkitconfigwidget.cpp24
-rw-r--r--src/plugins/debugger/debuggerkitinformation.h6
-rw-r--r--src/plugins/ios/iosconfigurations.cpp3
-rw-r--r--src/plugins/qnx/blackberryconfiguration.cpp4
5 files changed, 21 insertions, 19 deletions
diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp
index 7538282690e..4b6df3fd5e1 100644
--- a/src/plugins/android/androidconfigurations.cpp
+++ b/src/plugins/android/androidconfigurations.cpp
@@ -867,7 +867,8 @@ void AndroidConfigurations::updateAutomaticKitList()
debugger.setDisplayName(tr("Android Debugger for %1").arg(tc->displayName()));
debugger.setAutoDetected(true);
debugger.setAbi(tc->targetAbi());
- Debugger::DebuggerKitInformation::setDebugger(newKit, debugger);
+ QVariant id = Debugger::DebuggerItemManager::registerDebugger(debugger);
+ Debugger::DebuggerKitInformation::setDebugger(newKit, id);
AndroidGdbServerKitInformation::setGdbSever(newKit, tc->suggestedGdbServer());
newKit->makeSticky();
diff --git a/src/plugins/debugger/debuggerkitconfigwidget.cpp b/src/plugins/debugger/debuggerkitconfigwidget.cpp
index ece61bb99e5..9d9f0b23a9a 100644
--- a/src/plugins/debugger/debuggerkitconfigwidget.cpp
+++ b/src/plugins/debugger/debuggerkitconfigwidget.cpp
@@ -345,16 +345,11 @@ QString DebuggerKitInformation::displayString(const Kit *k)
return binary.isEmpty() ? tr("%1 <None>").arg(name) : tr("%1 using \"%2\"").arg(name, binary);
}
-void DebuggerKitInformation::setDebugger(Kit *k, const DebuggerItem &item)
+void DebuggerKitInformation::setDebugger(Kit *k, const QVariant &id)
{
// Only register reasonably complete debuggers.
- QTC_ASSERT(!item.id().isValid(), return);
- QTC_ASSERT(!item.command().isEmpty(), return);
- QTC_ASSERT(!item.displayName().isEmpty(), return);
- QTC_ASSERT(item.engineType() != NoEngineType, return);
- // Only set registered/existing debuggers
- QTC_ASSERT(DebuggerItemManager::findByCommand(item.command()), return);
- k->setValue(DebuggerKitInformation::id(), item.id());
+ QTC_ASSERT(DebuggerItemManager::findById(id), return);
+ k->setValue(DebuggerKitInformation::id(), id);
}
Core::Id DebuggerKitInformation::id()
@@ -651,11 +646,12 @@ void DebuggerItemManager::saveDebuggers()
// Do not save default debuggers as they are set by the SDK.
}
-void DebuggerItemManager::registerDebugger(const DebuggerItem &item)
+QVariant DebuggerItemManager::registerDebugger(const DebuggerItem &item)
{
if (findByCommand(item.command()))
- return;
- addDebugger(item);
+ return item.id();
+
+ return addDebugger(item);
}
void DebuggerItemManager::deregisterDebugger(const DebuggerItem &item)
@@ -664,13 +660,17 @@ void DebuggerItemManager::deregisterDebugger(const DebuggerItem &item)
removeDebugger(item.id());
}
-void DebuggerItemManager::addDebugger(const DebuggerItem& item0)
+QVariant DebuggerItemManager::addDebugger(const DebuggerItem& item0)
{
DebuggerItem item = item0;
+ QTC_ASSERT(!item.command().isEmpty(), return QVariant());
+ QTC_ASSERT(!item.displayName().isEmpty(), return QVariant());
+ QTC_ASSERT(item.engineType() != NoEngineType, return QVariant());
if (item.id().isNull())
item.setId(QUuid::createUuid().toString());
m_debuggers.append(item);
m_model->addDebugger(item);
+ return item.id();
}
void DebuggerItemManager::removeDebugger(const QVariant &id)
diff --git a/src/plugins/debugger/debuggerkitinformation.h b/src/plugins/debugger/debuggerkitinformation.h
index de965ca9858..dfdf6350a4e 100644
--- a/src/plugins/debugger/debuggerkitinformation.h
+++ b/src/plugins/debugger/debuggerkitinformation.h
@@ -110,7 +110,7 @@ public:
static QList<DebuggerItem> debuggers();
static Debugger::Internal::DebuggerItemModel *model();
- static void registerDebugger(const DebuggerItem &item);
+ static QVariant registerDebugger(const DebuggerItem &item);
static void deregisterDebugger(const DebuggerItem &item);
static const DebuggerItem *findByCommand(const Utils::FileName &command);
@@ -121,7 +121,7 @@ public:
static void setItemData(const QVariant &id, const QString& displayName, const Utils::FileName &fileName);
static void removeDebugger(const QVariant &id);
- static void addDebugger(const DebuggerItem &item);
+ static QVariant addDebugger(const DebuggerItem &item);
public slots:
void saveDebuggers();
@@ -164,7 +164,7 @@ public:
ItemList toUserOutput(const ProjectExplorer::Kit *k) const;
- static void setDebugger(ProjectExplorer::Kit *k, const DebuggerItem &item);
+ static void setDebugger(ProjectExplorer::Kit *k, const QVariant &id);
static Core::Id id();
static Utils::FileName debuggerCommand(const ProjectExplorer::Kit *k);
diff --git a/src/plugins/ios/iosconfigurations.cpp b/src/plugins/ios/iosconfigurations.cpp
index 9dac4889b3d..ebfca0293fc 100644
--- a/src/plugins/ios/iosconfigurations.cpp
+++ b/src/plugins/ios/iosconfigurations.cpp
@@ -316,7 +316,8 @@ void IosConfigurations::updateAutomaticKitList()
debugger.setDisplayName(tr("IOS Debugger"));
debugger.setAutoDetected(true);
debugger.setAbi(pToolchain->targetAbi());
- Debugger::DebuggerKitInformation::setDebugger(newKit, debugger);
+ QVariant id = Debugger::DebuggerItemManager::registerDebugger(debugger);
+ Debugger::DebuggerKitInformation::setDebugger(newKit, id);
SysRootKitInformation::setSysRoot(newKit, p.sdkPath);
// QmakeProjectManager::QmakeKitInformation::setMkspec(newKit,
diff --git a/src/plugins/qnx/blackberryconfiguration.cpp b/src/plugins/qnx/blackberryconfiguration.cpp
index 81f5ed0469d..78b01a30d88 100644
--- a/src/plugins/qnx/blackberryconfiguration.cpp
+++ b/src/plugins/qnx/blackberryconfiguration.cpp
@@ -237,8 +237,8 @@ Kit *BlackBerryConfiguration::createKit(QnxAbstractQtVersion *version, ToolChain
version->qtVersionString(), version->platformDisplayName(),
version->archString(), m_targetName));
- DebuggerItemManager::registerDebugger(debugger);
- DebuggerKitInformation::setDebugger(kit, debugger);
+ QVariant id = DebuggerItemManager::registerDebugger(debugger);
+ DebuggerKitInformation::setDebugger(kit, id);
if (isSimulator)
QmakeProjectManager::QmakeKitInformation::setMkspec(