forked from qt-creator/qt-creator
Debugger: Change gdb binary key, do not write binaries unless changed.
Reviewed-by: con
This commit is contained in:
@@ -55,7 +55,7 @@
|
|||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
|
|
||||||
static const char debugModeSettingsGroupC[] = "DebugMode";
|
static const char debugModeSettingsGroupC[] = "DebugMode";
|
||||||
static const char gdbBinariesSettingsGroupC[] = "GdbBinaries";
|
static const char gdbBinariesSettingsGroupC[] = "GdbBinaries21";
|
||||||
static const char debugModeGdbBinaryKeyC[] = "GdbBinary";
|
static const char debugModeGdbBinaryKeyC[] = "GdbBinary";
|
||||||
|
|
||||||
namespace Debugger {
|
namespace Debugger {
|
||||||
@@ -85,13 +85,11 @@ void DebuggerSettings::insertItem(int code, SavedAction *item)
|
|||||||
m_items[code] = item;
|
m_items[code] = item;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DebuggerSettings::readSettings(QSettings *settings)
|
// Convert gdb binaries from flat settings list (see writeSettings)
|
||||||
|
// into map ("binary1=gdb,1,2", "binary2=symbian_gdb,3,4").
|
||||||
|
DebuggerSettings::GdbBinaryToolChainMap DebuggerSettings::gdbBinaryToolChainMapFromSettings(const QSettings *settings)
|
||||||
{
|
{
|
||||||
foreach (SavedAction *item, m_items)
|
GdbBinaryToolChainMap gdbBinaryToolChainMap;
|
||||||
item->readSettings(settings);
|
|
||||||
// Convert gdb binaries from flat settings list (see writeSettings)
|
|
||||||
// into map ("binary1=gdb,1,2", "binary2=symbian_gdb,3,4").
|
|
||||||
m_gdbBinaryToolChainMap.clear();
|
|
||||||
const QChar separator = QLatin1Char(',');
|
const QChar separator = QLatin1Char(',');
|
||||||
const QString keyRoot = QLatin1String(gdbBinariesSettingsGroupC) + QLatin1Char('/') +
|
const QString keyRoot = QLatin1String(gdbBinariesSettingsGroupC) + QLatin1Char('/') +
|
||||||
QLatin1String(debugModeGdbBinaryKeyC);
|
QLatin1String(debugModeGdbBinaryKeyC);
|
||||||
@@ -108,9 +106,9 @@ void DebuggerSettings::readSettings(QSettings *settings)
|
|||||||
foreach(const QString &t, tokens) {
|
foreach(const QString &t, tokens) {
|
||||||
// Paranoia: Check if the there is already a binary configured for the toolchain.
|
// Paranoia: Check if the there is already a binary configured for the toolchain.
|
||||||
const int toolChain = t.toInt();
|
const int toolChain = t.toInt();
|
||||||
const QString predefinedGdb = m_gdbBinaryToolChainMap.key(toolChain);
|
const QString predefinedGdb = gdbBinaryToolChainMap.key(toolChain);
|
||||||
if (predefinedGdb.isEmpty()) {
|
if (predefinedGdb.isEmpty()) {
|
||||||
m_gdbBinaryToolChainMap.insert(binary, toolChain);
|
gdbBinaryToolChainMap.insert(binary, toolChain);
|
||||||
} else {
|
} else {
|
||||||
const QString toolChainName = ProjectExplorer::ToolChain::toolChainName(static_cast<ProjectExplorer::ToolChain::ToolChainType>(toolChain));
|
const QString toolChainName = ProjectExplorer::ToolChain::toolChainName(static_cast<ProjectExplorer::ToolChain::ToolChainType>(toolChain));
|
||||||
const QString msg =
|
const QString msg =
|
||||||
@@ -123,14 +121,24 @@ void DebuggerSettings::readSettings(QSettings *settings)
|
|||||||
}
|
}
|
||||||
// Linux defaults
|
// Linux defaults
|
||||||
#ifdef Q_OS_UNIX
|
#ifdef Q_OS_UNIX
|
||||||
if (m_gdbBinaryToolChainMap.isEmpty()) {
|
if (gdbBinaryToolChainMap.isEmpty()) {
|
||||||
const QString gdb = QLatin1String("gdb");
|
const QString gdb = QLatin1String("gdb");
|
||||||
m_gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::GCC);
|
gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::GCC);
|
||||||
m_gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::LINUX_ICC);
|
gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::LINUX_ICC);
|
||||||
m_gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::OTHER);
|
gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::OTHER);
|
||||||
m_gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::UNKNOWN);
|
gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::UNKNOWN);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
return gdbBinaryToolChainMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DebuggerSettings::readSettings(QSettings *settings)
|
||||||
|
{
|
||||||
|
foreach (SavedAction *item, m_items)
|
||||||
|
item->readSettings(settings);
|
||||||
|
// Convert gdb binaries from flat settings list (see writeSettings)
|
||||||
|
// into map ("binary1=gdb,1,2", "binary2=symbian_gdb,3,4").
|
||||||
|
m_gdbBinaryToolChainMap = gdbBinaryToolChainMapFromSettings(settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DebuggerSettings::writeSettings(QSettings *settings) const
|
void DebuggerSettings::writeSettings(QSettings *settings) const
|
||||||
@@ -139,6 +147,8 @@ void DebuggerSettings::writeSettings(QSettings *settings) const
|
|||||||
item->writeSettings(settings);
|
item->writeSettings(settings);
|
||||||
// Convert gdb binaries map into a flat settings list of
|
// Convert gdb binaries map into a flat settings list of
|
||||||
// ("binary1=gdb,1,2", "binary2=symbian_gdb,3,4"). It needs to be ASCII for installers
|
// ("binary1=gdb,1,2", "binary2=symbian_gdb,3,4"). It needs to be ASCII for installers
|
||||||
|
if (m_gdbBinaryToolChainMap == gdbBinaryToolChainMapFromSettings(settings))
|
||||||
|
return;
|
||||||
QString lastBinary;
|
QString lastBinary;
|
||||||
QStringList settingsList;
|
QStringList settingsList;
|
||||||
const QChar separator = QLatin1Char(',');
|
const QChar separator = QLatin1Char(',');
|
||||||
|
@@ -76,6 +76,8 @@ public slots:
|
|||||||
void writeSettings(QSettings *settings) const;
|
void writeSettings(QSettings *settings) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
static GdbBinaryToolChainMap gdbBinaryToolChainMapFromSettings(const QSettings *s);
|
||||||
|
|
||||||
QHash<int, Utils::SavedAction *> m_items;
|
QHash<int, Utils::SavedAction *> m_items;
|
||||||
GdbBinaryToolChainMap m_gdbBinaryToolChainMap;
|
GdbBinaryToolChainMap m_gdbBinaryToolChainMap;
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user