summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2019-10-30 09:12:18 +0100
committerDavid Schulz <david.schulz@qt.io>2019-10-30 09:29:04 +0000
commit5fcfe159cf53194cb6fb94d1bbd0c4e8e77d7578 (patch)
tree709133bca504539c70190ac36b71c83d9b2125d3
parent6664d78ded334264c3486c0b9472b23f8f3fc2e0 (diff)
downloadqt-creator-5fcfe159cf53194cb6fb94d1bbd0c4e8e77d7578.tar.gz
Debugger: adjust resetting the symbol server after cdb update
The cdb symbol server can currently only be cleared by setting the symbol path via .sympath command and an empty string. Change-Id: I013b106856d87dbc2de0fdcaa876fd6d9378fb63 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r--src/plugins/debugger/cdb/cdbengine.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp
index 4e04a02fc4..798013ed42 100644
--- a/src/plugins/debugger/cdb/cdbengine.cpp
+++ b/src/plugins/debugger/cdb/cdbengine.cpp
@@ -394,14 +394,7 @@ void CdbEngine::setupEngine()
if (!sourcePaths.isEmpty())
debugger.addArgs({"-srcpath", sourcePaths.join(';')});
- QStringList symbolPaths = stringListSetting(CdbSymbolPaths);
- QString symbolPath = sp.inferior.environment.expandedValueForKey("_NT_ALT_SYMBOL_PATH");
- if (!symbolPath.isEmpty())
- symbolPaths += symbolPath;
- symbolPath = sp.inferior.environment.expandedValueForKey("_NT_SYMBOL_PATH");
- if (!symbolPath.isEmpty())
- symbolPaths += symbolPath;
- debugger.addArgs({"-y", symbolPaths.join(';')});
+ debugger.addArgs({"-y", QChar('"') + stringListSetting(CdbSymbolPaths).join(';') + '"'});
switch (sp.startMode) {
case StartInternal:
@@ -501,6 +494,16 @@ void CdbEngine::handleInitialSessionIdle()
}
// Take ownership of the breakpoint. Requests insertion. TODO: Cpp only?
BreakpointManager::claimBreakpointsForEngine(this);
+
+ QStringList symbolPaths = stringListSetting(CdbSymbolPaths);
+ QString symbolPath = rp.inferior.environment.expandedValueForKey("_NT_ALT_SYMBOL_PATH");
+ if (!symbolPath.isEmpty())
+ symbolPaths += symbolPath;
+ symbolPath = rp.inferior.environment.expandedValueForKey("_NT_SYMBOL_PATH");
+ if (!symbolPath.isEmpty())
+ symbolPaths += symbolPath;
+
+ runCommand({QString(".sympath \"") + symbolPaths.join(';') + '"'});
runCommand({".symopt+0x8000"}); // disable searching public symbol table - improving the symbol lookup speed
runCommand({"sxn 0x4000001f", NoFlags}); // Do not break on WowX86 exceptions.
runCommand({"sxn ibp", NoFlags}); // Do not break on initial breakpoints.