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>
This commit is contained in:
David Schulz
2019-10-30 09:12:18 +01:00
parent 6664d78ded
commit 5fcfe159cf

View File

@@ -394,14 +394,7 @@ void CdbEngine::setupEngine()
if (!sourcePaths.isEmpty()) if (!sourcePaths.isEmpty())
debugger.addArgs({"-srcpath", sourcePaths.join(';')}); debugger.addArgs({"-srcpath", sourcePaths.join(';')});
QStringList symbolPaths = stringListSetting(CdbSymbolPaths); debugger.addArgs({"-y", QChar('"') + stringListSetting(CdbSymbolPaths).join(';') + '"'});
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(';')});
switch (sp.startMode) { switch (sp.startMode) {
case StartInternal: case StartInternal:
@@ -501,6 +494,16 @@ void CdbEngine::handleInitialSessionIdle()
} }
// Take ownership of the breakpoint. Requests insertion. TODO: Cpp only? // Take ownership of the breakpoint. Requests insertion. TODO: Cpp only?
BreakpointManager::claimBreakpointsForEngine(this); 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({".symopt+0x8000"}); // disable searching public symbol table - improving the symbol lookup speed
runCommand({"sxn 0x4000001f", NoFlags}); // Do not break on WowX86 exceptions. runCommand({"sxn 0x4000001f", NoFlags}); // Do not break on WowX86 exceptions.
runCommand({"sxn ibp", NoFlags}); // Do not break on initial breakpoints. runCommand({"sxn ibp", NoFlags}); // Do not break on initial breakpoints.