diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp
index 7538282690e25074b3979630049e40c37e758cdd..4b6df3fd5e199c1ccd62ad44b6548d50863264f7 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 ece61bb99e58f1c74272e29677380f6c58083910..9d9f0b23a9a5b70b921c51b833033c790895b681 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 de965ca98581916074f08c8724832860b91201e8..dfdf6350a4e0ec56f8590c8e14f2739b738a879f 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 9dac4889b3d6901d086791ac4f1d924f543fa336..ebfca0293fcc2a532c29a01583bcf7070fbba2f0 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 81f5ed0469da5063d267734a9b9613a8d12a66a9..78b01a30d88c34ab4fc4ddc5f918d08d71bbce7d 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(