Debugger: Add incremental API for modules.

And use it from CDB's module load/unload callbacks
instead of re-setting all modules. Some cleanup.
Acked-by: hjk
This commit is contained in:
Friedemann Kleint
2010-05-19 15:14:15 +02:00
parent e1f57bcbc5
commit a31813da02
7 changed files with 142 additions and 26 deletions

View File

@@ -1558,12 +1558,26 @@ void CdbDebugEnginePrivate::updateModules()
static const char *dumperPrefixC = "dumper";
void CdbDebugEnginePrivate::handleModuleLoad(const QString &name)
void CdbDebugEnginePrivate::handleModuleLoad(quint64 offset, const QString &name)
{
if (debugCDB>2)
qDebug() << Q_FUNC_INFO << "\n " << name;
qDebug() << Q_FUNC_INFO << "\n " << offset << name;
Module module;
// Determine module parameters by offset. The callback has almost all the
// parameters we need with the exception of 'symbolsRead'. Retrieve the
// parameters by offset as to avoid a hack like 'check last module'.
QString errorMessage;
if (getModuleByOffset(interfaces().debugSymbols, offset, &module, &errorMessage)) {
manager()->modulesHandler()->addModule(module);
} else {
m_engine->warning(errorMessage);
}
m_dumper->moduleLoadHook(name, m_hDebuggeeProcess);
updateModules();
}
void CdbDebugEnginePrivate::handleModuleUnload(const QString &imageName)
{
manager()->modulesHandler()->removeModule(imageName);
}
void CdbDebugEnginePrivate::handleBreakpointEvent(PDEBUG_BREAKPOINT2 pBP)