diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index 41e5c37c789..b8e15eaed16 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -352,42 +352,6 @@ void CdbEnginePrivate::checkVersion() } } -void CdbEngine::startupChecks() -{ - // Check symbol server unless the user has an external/internal setup - if (!qgetenv("_NT_SYMBOL_PATH").isEmpty() - || CdbOptions::indexOfSymbolServerPath(m_d->m_options->symbolPaths) != -1) - return; - // Prompt to use Symbol server unless the user checked "No nagging". - Core::ICore *core = Core::ICore::instance(); - const QString nagSymbolServerKey = CdbOptions::settingsGroup() + QLatin1String("/NoPromptSymbolServer"); - bool noFurtherNagging = core->settings()->value(nagSymbolServerKey, false).toBool(); - if (noFurtherNagging) - return; - - const QString symServUrl = QLatin1String("http://support.microsoft.com/kb/311503"); - const QString msg = tr("
The debugger is not configured to use the public " - "Microsoft Symbol Server. This is recommended " - "for retrieval of the symbols of the operating system libraries.
" - "Note: A fast internet connection is required for this to work smoothly. Also, a delay " - "might occur when connecting for the first time.
" - "Would you like to set it up?
" - "").arg(symServUrl); - const QDialogButtonBox::StandardButton answer = - Utils::CheckableMessageBox::question(core->mainWindow(), tr("Symbol Server"), msg, - tr("Do not ask again"), &noFurtherNagging); - core->settings()->setValue(nagSymbolServerKey, noFurtherNagging); - if (answer == QDialogButtonBox::No) - return; - // Prompt for path and add it. Synchronize QSetting and debugger. - const QString cacheDir = CdbSymbolPathListEditor::promptCacheDirectory(core->mainWindow()); - if (cacheDir.isEmpty()) - return; - m_d->m_options->symbolPaths.push_back(CdbOptions::symbolServerPath(cacheDir)); - m_d->m_options->toSettings(core->settings()); - syncDebuggerPaths(); -} - void CdbEngine::setupEngine() { QTC_ASSERT(state() == EngineSetupRequested, qDebug() << state()); @@ -395,7 +359,12 @@ void CdbEngine::setupEngine() if (debugCDBExecution) qDebug("setupEngine"); CdbCore::BreakPoint::clearNormalizeFileNameCache(); - startupChecks(); + // Nag to add symbol server + if (CdbSymbolPathListEditor::promptToAddSymbolServer(CdbOptions::settingsGroup(), + &(m_d->m_options->symbolPaths))) { + m_d->m_options->toSettings(Core::ICore::instance()->settings()); + syncDebuggerPaths(); + } m_d->checkVersion(); if (m_d->m_hDebuggeeProcess) { warning(QLatin1String("Internal error: Attempt to start debugger while another process is being debugged.")); diff --git a/src/plugins/debugger/cdb/cdbengine.h b/src/plugins/debugger/cdb/cdbengine.h index 32ecbc57ea7..9fd5208cea6 100644 --- a/src/plugins/debugger/cdb/cdbengine.h +++ b/src/plugins/debugger/cdb/cdbengine.h @@ -109,7 +109,6 @@ private slots: void warning(const QString &w); private: - void startupChecks(); inline bool startAttachDebugger(qint64 pid, DebuggerStartMode sm, QString *errorMessage); void processTerminated(unsigned long exitCode); void evaluateWatcher(WatchData *wd); diff --git a/src/plugins/debugger/cdb2/cdbengine2.cpp b/src/plugins/debugger/cdb2/cdbengine2.cpp index 98d54a71be6..8c1911b54bc 100644 --- a/src/plugins/debugger/cdb2/cdbengine2.cpp +++ b/src/plugins/debugger/cdb2/cdbengine2.cpp @@ -44,6 +44,9 @@ #include "cdbparsehelpers.h" #include "watchutils.h" #include "gdb/gdbmi.h" +#include "shared/cdbsymbolpathlisteditor.h" + +#includeThe debugger is not configured to use the public " + "Microsoft Symbol Server. This is recommended " + "for retrieval of the symbols of the operating system libraries.
" + "Note: A fast internet connection is required for this to work smoothly. Also, a delay " + "might occur when connecting for the first time.
" + "Would you like to set it up?
" + "").arg(symServUrl); + const QDialogButtonBox::StandardButton answer = + Utils::CheckableMessageBox::question(core->mainWindow(), tr("Symbol Server"), msg, + tr("Do not ask again"), &noFurtherNagging); + core->settings()->setValue(nagSymbolServerKey, noFurtherNagging); + if (answer == QDialogButtonBox::No) + return false; + // Prompt for path and add it. Synchronize QSetting and debugger. + const QString cacheDir = CdbSymbolPathListEditor::promptCacheDirectory(core->mainWindow()); + if (cacheDir.isEmpty()) + return false; + + symbolPaths->push_back(CdbSymbolPathListEditor::symbolServerPath(cacheDir)); + return true; +} + } // namespace Internal } // namespace Debugger diff --git a/src/plugins/debugger/shared/cdbsymbolpathlisteditor.h b/src/plugins/debugger/shared/cdbsymbolpathlisteditor.h index f8c5bb04b7a..52f6b3d3b38 100644 --- a/src/plugins/debugger/shared/cdbsymbolpathlisteditor.h +++ b/src/plugins/debugger/shared/cdbsymbolpathlisteditor.h @@ -86,6 +86,9 @@ public: // Check for symbol server in list of paths. static int indexOfSymbolServerPath(const QStringList &paths, QString *cacheDir = 0); + // Nag user to add a symbol server to the path list on debugger startup. + static bool promptToAddSymbolServer(const QString &settingsGroup, QStringList *symbolPaths); + private slots: void addSymbolServer(); };