diff --git a/src/plugins/debugger/debuggerkitconfigwidget.cpp b/src/plugins/debugger/debuggerkitconfigwidget.cpp index d3ec750b6b6..0df34d0f55c 100644 --- a/src/plugins/debugger/debuggerkitconfigwidget.cpp +++ b/src/plugins/debugger/debuggerkitconfigwidget.cpp @@ -159,26 +159,6 @@ void DebuggerItem::fromMap(const QVariantMap &data) if (abi.isValid()) abis.append(abi); } - -// // Check for special 'auto' entry for binary written by the sdktool during -// // installation. Try to autodetect. -// if (command == QLatin1String("auto")) { -// command.clear(); -// switch (engineType) { -// case Debugger::GdbEngineType: // Auto-detect system gdb on Unix -// if (Abi::hostAbi().os() != Abi::WindowsOS) -// comman = Environment::systemEnvironment().searchInPath(QLatin1String("gdb")); -// break; -// case Debugger::CdbEngineType: { // Auto-detect system CDB on Windows. -// const QPair cdbs = autoDetectCdbDebugger(); -// binary = cdbs.second.isEmpty() ? cdbs.first : cdbs.second; -// } -// break; -// default: -// break; -// } -// } -// command = FileName::fromString(binary); } QString DebuggerItem::userOutput() const @@ -330,16 +310,32 @@ DebuggerItem DebuggerKitInformation::debuggerItem(const ProjectExplorer::Kit *k) if (!k) return DebuggerItem(); - QVariant id = k->value(DEBUGGER_INFORMATION); - if (!id.isValid()) - return DebuggerItem(); + // We used to have: + // + // /data/dev/debugger/gdb-git/gdb/gdb + // 1 + // + // Starting with 3.0 we have: + // {75ecf347-f221-44c3-b613-ea1d29929cd4} + + QVariant id = k->value(DEBUGGER_INFORMATION); + + QString pathOrUid; + if (id.type() == QVariant::Map) // 2.x + pathOrUid = id.toMap().value(QLatin1String("Binary")).toString(); + else if (id.type() == QVariant::String) // 3.x + pathOrUid = id.toString(); + + DebuggerItem *item; + if (pathOrUid.startsWith(QLatin1Char('{'))) + item = DebuggerItemManager::debuggerFromId(id); + else + item = DebuggerItemManager::debuggerFromPath(pathOrUid); - DebuggerItem *item = DebuggerItemManager::debuggerFromId(id); QTC_ASSERT(item, return DebuggerItem()); return *item; } - void DebuggerKitInformation::setDebuggerItem(Kit *k, DebuggerEngineType type, const Utils::FileName &command) { @@ -741,6 +737,14 @@ DebuggerItem *DebuggerItemManager::debuggerFromId(const QVariant &id) return 0; } +DebuggerItem *DebuggerItemManager::debuggerFromPath(const QString &path) +{ + foreach (DebuggerItem *item, theDebuggerItemManager()->m_debuggers) + if (item->command.toString() == path) + return item; + return 0; +} + QModelIndex DebuggerItemManager::currentIndex() const { QStandardItem *current = m_itemFromDebugger.value(m_currentDebugger); diff --git a/src/plugins/debugger/debuggerkitconfigwidget.h b/src/plugins/debugger/debuggerkitconfigwidget.h index 72503393cbd..fa93c34068a 100644 --- a/src/plugins/debugger/debuggerkitconfigwidget.h +++ b/src/plugins/debugger/debuggerkitconfigwidget.h @@ -71,6 +71,7 @@ public: QList findDebuggers(const ProjectExplorer::Abi &abi) const; DebuggerItem *currentDebugger() const { return m_currentDebugger; } static DebuggerItem *debuggerFromId(const QVariant &id); + static DebuggerItem *debuggerFromPath(const QString &path); QModelIndex currentIndex() const; void setCurrentIndex(const QModelIndex &index);