Skip to content
Snippets Groups Projects
Commit c717c1f9 authored by Friedemann Kleint's avatar Friedemann Kleint
Browse files

Debugger: Suppress inconsistencies in gdb binary settings.


caused by the merging of global settings.
Terminate list of binaries by an empty element to prevent
accidental reading of consecutive keys.
Add Linux-ICC to list of toolchains for gdb.

Acked-by: hjk
Reviewed-by: default avatarDaniel Molkentin <daniel.molkentin@nokia.com>
Task-number: QTCREATORBUG-2848
parent 387180b0
No related branches found
No related tags found
No related merge requests found
...@@ -101,14 +101,28 @@ void DebuggerSettings::readSettings(QSettings *settings) ...@@ -101,14 +101,28 @@ void DebuggerSettings::readSettings(QSettings *settings)
break; break;
const QString binary = tokens.front(); const QString binary = tokens.front();
tokens.pop_front(); tokens.pop_front();
foreach(const QString &t, tokens) foreach(const QString &t, tokens) {
m_gdbBinaryToolChainMap.insert(binary, t.toInt()); // Paranoia: Check if the there is already a binary configured for the toolchain.
const int toolChain = t.toInt();
const QString predefinedGdb = m_gdbBinaryToolChainMap.key(toolChain);
if (predefinedGdb.isEmpty()) {
m_gdbBinaryToolChainMap.insert(binary, toolChain);
} else {
const QString toolChainName = ProjectExplorer::ToolChain::toolChainName(static_cast<ProjectExplorer::ToolChain::ToolChainType>(toolChain));
const QString msg =
QString::fromLatin1("An inconsistency has been encountered in the Ini-file '%1':\n"
"Skipping gdb binary '%2' for toolchain '%3' as '%4' is already configured for it.").
arg(settings->fileName(), binary, toolChainName, predefinedGdb);
qWarning("%s", qPrintable(msg));
}
}
} }
// Linux defaults // Linux defaults
#ifdef Q_OS_UNIX #ifdef Q_OS_UNIX
if (m_gdbBinaryToolChainMap.isEmpty()) { if (m_gdbBinaryToolChainMap.isEmpty()) {
const QString gdb = QLatin1String("gdb"); const QString gdb = QLatin1String("gdb");
m_gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::GCC); m_gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::GCC);
m_gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::LINUX_ICC);
m_gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::OTHER); m_gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::OTHER);
m_gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::UNKNOWN); m_gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::UNKNOWN);
} }
...@@ -133,6 +147,10 @@ void DebuggerSettings::writeSettings(QSettings *settings) const ...@@ -133,6 +147,10 @@ void DebuggerSettings::writeSettings(QSettings *settings) const
settingsList.back().append(separator); // Append toolchain to last binary settingsList.back().append(separator); // Append toolchain to last binary
settingsList.back().append(QString::number(it.value())); settingsList.back().append(QString::number(it.value()));
} }
// Terminate settings list by an empty element such that consecutive keys resulting
// from ini-file merging are suppressed while reading.
settingsList.push_back(QString());
// Write out list
settings->beginGroup(QLatin1String(gdbBinariesSettingsGroupC)); settings->beginGroup(QLatin1String(gdbBinariesSettingsGroupC));
settings->remove(QString()); // remove all keys in group. settings->remove(QString()); // remove all keys in group.
const int count = settingsList.size(); const int count = settingsList.size();
......
...@@ -68,6 +68,7 @@ static QList<int> allGdbToolChains() ...@@ -68,6 +68,7 @@ static QList<int> allGdbToolChains()
rc rc
#ifdef Q_OS_UNIX #ifdef Q_OS_UNIX
<< ProjectExplorer::ToolChain::GCC << ProjectExplorer::ToolChain::GCC
<< ProjectExplorer::ToolChain::LINUX_ICC
#endif #endif
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
<< ProjectExplorer::ToolChain::MinGW << ProjectExplorer::ToolChain::MinGW
...@@ -424,6 +425,7 @@ ToolChainSelectorWidget::ToolChainSelectorWidget(QWidget *parent) : ...@@ -424,6 +425,7 @@ ToolChainSelectorWidget::ToolChainSelectorWidget(QWidget *parent) :
foreach(int tc, allGdbToolChains()) { foreach(int tc, allGdbToolChains()) {
switch (tc) { switch (tc) {
case ProjectExplorer::ToolChain::GCC: case ProjectExplorer::ToolChain::GCC:
case ProjectExplorer::ToolChain::LINUX_ICC:
case ProjectExplorer::ToolChain::MinGW: case ProjectExplorer::ToolChain::MinGW:
case ProjectExplorer::ToolChain::OTHER: case ProjectExplorer::ToolChain::OTHER:
case ProjectExplorer::ToolChain::UNKNOWN: case ProjectExplorer::ToolChain::UNKNOWN:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment