From 6dd55aa471ceab549eb83ebe2c82b0972fd7ef9e Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Wed, 12 Jan 2011 12:10:12 +0100 Subject: [PATCH] debugger: introduce generic master/slaves engine --- src/plugins/debugger/cdb/cdbengine.cpp | 19 ++++--- src/plugins/debugger/cdb/cdbengine.h | 5 +- src/plugins/debugger/debuggerengine.cpp | 60 +++++++++++++---------- src/plugins/debugger/debuggerengine.h | 21 ++++---- src/plugins/debugger/debuggerplugin.cpp | 12 +---- src/plugins/debugger/debuggerrunner.cpp | 22 ++++----- src/plugins/debugger/gdb/gdbengine.cpp | 10 ++-- src/plugins/debugger/gdb/gdbengine.h | 5 +- src/plugins/debugger/qml/qmlcppengine.cpp | 42 +++++----------- src/plugins/debugger/qml/qmlengine.cpp | 17 ++++--- src/plugins/debugger/qml/qmlengine.h | 3 +- 11 files changed, 108 insertions(+), 108 deletions(-) diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index 05c51305216..eb30aa28561 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -262,7 +262,8 @@ static inline QString msgCdbDisabled(ToolChainType tc) } // Accessed by RunControlFactory -DebuggerEngine *createCdbEngine(const DebuggerStartParameters &sp, QString *errorMessage) +DebuggerEngine *createCdbEngine(const DebuggerStartParameters &sp, + DebuggerEngine *masterEngine, QString *errorMessage) { #ifdef Q_OS_WIN CdbOptionsPage *op = CdbOptionsPage::instance(); @@ -274,11 +275,12 @@ DebuggerEngine *createCdbEngine(const DebuggerStartParameters &sp, QString *erro *errorMessage = CdbEngine::tr("The CDB debug engine does not support start mode %1.").arg(sp.startMode); return 0; } - return new CdbEngine(sp, op->options()); + return new CdbEngine(sp, masterEngine, op->options()); #else + Q_UNUSED(masterEngine) Q_UNUSED(sp) #endif - *errorMessage = QString::fromLatin1("Unsuppported debug mode"); + *errorMessage = QString::fromLatin1("Unsupported debug mode"); return 0; } @@ -315,9 +317,13 @@ ConfigurationCheck checkCdbConfiguration(ToolChainType toolChain) return check; } -void addCdb2OptionPages(QList<Core::IOptionsPage *> *opts) +void addCdbOptionPages(QList<Core::IOptionsPage *> *opts) { +#ifdef Q_OS_WIN opts->push_back(new CdbOptionsPage); +#else + Q_UNUSED(opts); +#endif } #define QT_CREATOR_CDB_EXT "qtcreatorcdbext" @@ -327,8 +333,9 @@ static inline Utils::SavedAction *theAssemblerAction() return debuggerCore()->action(OperateByInstruction); } -CdbEngine::CdbEngine(const DebuggerStartParameters &sp, const OptionsPtr &options) : - DebuggerEngine(sp), +CdbEngine::CdbEngine(const DebuggerStartParameters &sp, + DebuggerEngine *masterEngine, const OptionsPtr &options) : + DebuggerEngine(sp, masterEngine), m_creatorExtPrefix("<qtcreatorcdbext>|"), m_tokenPrefix("<token>"), m_options(options), diff --git a/src/plugins/debugger/cdb/cdbengine.h b/src/plugins/debugger/cdb/cdbengine.h index 83a47d5746c..403f8e6d584 100644 --- a/src/plugins/debugger/cdb/cdbengine.h +++ b/src/plugins/debugger/cdb/cdbengine.h @@ -72,7 +72,10 @@ public: typedef void (CdbEngine::*BuiltinCommandHandler)(const CdbBuiltinCommandPtr &); typedef void (CdbEngine::*ExtensionCommandHandler)(const CdbExtensionCommandPtr &); - explicit CdbEngine(const DebuggerStartParameters &sp, const OptionsPtr &options); + explicit CdbEngine(const DebuggerStartParameters &sp, + DebuggerEngine *masterEngine, + const OptionsPtr &options); + virtual ~CdbEngine(); // Factory function that returns 0 if the debug engine library cannot be found. diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index 8863d4ade4b..6d650bc4bd8 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -165,8 +165,11 @@ class DebuggerEnginePrivate : public QObject Q_OBJECT public: - DebuggerEnginePrivate(DebuggerEngine *engine, const DebuggerStartParameters &sp) + DebuggerEnginePrivate(DebuggerEngine *engine, + DebuggerEngine *masterEngine, + const DebuggerStartParameters &sp) : m_engine(engine), + m_masterEngine(masterEngine), m_runControl(0), m_startParameters(sp), m_state(DebuggerNotReady), @@ -178,7 +181,6 @@ public: m_stackHandler(), m_threadsHandler(), m_watchHandler(engine), - m_isSlaveEngine(false), m_disassemblerAgent(engine), m_memoryAgent(engine) { @@ -250,6 +252,7 @@ public: DebuggerState state() const { return m_state; } DebuggerEngine *m_engine; // Not owned. + DebuggerEngine *m_masterEngine; // Not owned DebuggerRunControl *m_runControl; // Not owned. DebuggerStartParameters m_startParameters; @@ -273,7 +276,6 @@ public: WatchHandler m_watchHandler; QFutureInterface<void> m_progress; - bool m_isSlaveEngine; DisassemblerAgent m_disassemblerAgent; MemoryAgent m_memoryAgent; QScopedPointer<TextEditor::BaseTextMark> m_locationMark; @@ -287,8 +289,9 @@ public: // ////////////////////////////////////////////////////////////////////// -DebuggerEngine::DebuggerEngine(const DebuggerStartParameters &startParameters) - : d(new DebuggerEnginePrivate(this, startParameters)) +DebuggerEngine::DebuggerEngine(const DebuggerStartParameters &startParameters, + DebuggerEngine *parentEngine) + : d(new DebuggerEnginePrivate(this, parentEngine, startParameters)) { } @@ -354,37 +357,49 @@ void DebuggerEngine::frameDown() ModulesHandler *DebuggerEngine::modulesHandler() const { - return &d->m_modulesHandler; + return d->m_masterEngine + ? d->m_masterEngine->modulesHandler() + : &d->m_modulesHandler; } RegisterHandler *DebuggerEngine::registerHandler() const { - return &d->m_registerHandler; + return d->m_masterEngine + ? d->m_masterEngine->registerHandler() + : &d->m_registerHandler; } StackHandler *DebuggerEngine::stackHandler() const { - return &d->m_stackHandler; + return d->m_masterEngine + ? d->m_masterEngine->stackHandler() + : &d->m_stackHandler; } ThreadsHandler *DebuggerEngine::threadsHandler() const { - return &d->m_threadsHandler; + return d->m_masterEngine + ? d->m_masterEngine->threadsHandler() + : &d->m_threadsHandler; } WatchHandler *DebuggerEngine::watchHandler() const { - return &d->m_watchHandler; + return d->m_masterEngine + ? d->m_masterEngine->watchHandler() + : &d->m_watchHandler; } SourceFilesHandler *DebuggerEngine::sourceFilesHandler() const { - return &d->m_sourceFilesHandler; + return d->m_masterEngine + ? d->m_masterEngine->sourceFilesHandler() + : &d->m_sourceFilesHandler; } QAbstractItemModel *DebuggerEngine::modulesModel() const { - QAbstractItemModel *model = d->m_modulesHandler.model(); + QAbstractItemModel *model = modulesHandler()->model(); if (model->objectName().isEmpty()) // Make debugging easier. model->setObjectName(objectName() + QLatin1String("ModulesModel")); return model; @@ -392,7 +407,7 @@ QAbstractItemModel *DebuggerEngine::modulesModel() const QAbstractItemModel *DebuggerEngine::registerModel() const { - QAbstractItemModel *model = d->m_registerHandler.model(); + QAbstractItemModel *model = registerHandler()->model(); if (model->objectName().isEmpty()) // Make debugging easier. model->setObjectName(objectName() + QLatin1String("RegisterModel")); return model; @@ -400,7 +415,7 @@ QAbstractItemModel *DebuggerEngine::registerModel() const QAbstractItemModel *DebuggerEngine::stackModel() const { - QAbstractItemModel *model = d->m_stackHandler.model(); + QAbstractItemModel *model = stackHandler()->model(); if (model->objectName().isEmpty()) // Make debugging easier. model->setObjectName(objectName() + QLatin1String("StackModel")); return model; @@ -408,7 +423,7 @@ QAbstractItemModel *DebuggerEngine::stackModel() const QAbstractItemModel *DebuggerEngine::threadsModel() const { - QAbstractItemModel *model = d->m_threadsHandler.model(); + QAbstractItemModel *model = threadsHandler()->model(); if (model->objectName().isEmpty()) // Make debugging easier. model->setObjectName(objectName() + QLatin1String("ThreadsModel")); return model; @@ -416,7 +431,7 @@ QAbstractItemModel *DebuggerEngine::threadsModel() const QAbstractItemModel *DebuggerEngine::localsModel() const { - QAbstractItemModel *model = d->m_watchHandler.model(LocalsWatch); + QAbstractItemModel *model = watchHandler()->model(LocalsWatch); if (model->objectName().isEmpty()) // Make debugging easier. model->setObjectName(objectName() + QLatin1String("LocalsModel")); return model; @@ -424,7 +439,7 @@ QAbstractItemModel *DebuggerEngine::localsModel() const QAbstractItemModel *DebuggerEngine::watchersModel() const { - QAbstractItemModel *model = d->m_watchHandler.model(WatchersWatch); + QAbstractItemModel *model = watchHandler()->model(WatchersWatch); if (model->objectName().isEmpty()) // Make debugging easier. model->setObjectName(objectName() + QLatin1String("WatchersModel")); return model; @@ -432,7 +447,7 @@ QAbstractItemModel *DebuggerEngine::watchersModel() const QAbstractItemModel *DebuggerEngine::returnModel() const { - QAbstractItemModel *model = d->m_watchHandler.model(ReturnWatch); + QAbstractItemModel *model = watchHandler()->model(ReturnWatch); if (model->objectName().isEmpty()) // Make debugging easier. model->setObjectName(objectName() + QLatin1String("ReturnModel")); return model; @@ -440,7 +455,7 @@ QAbstractItemModel *DebuggerEngine::returnModel() const QAbstractItemModel *DebuggerEngine::sourceFilesModel() const { - QAbstractItemModel *model = d->m_sourceFilesHandler.model(); + QAbstractItemModel *model = sourceFilesHandler()->model(); if (model->objectName().isEmpty()) // Make debugging easier. model->setObjectName(objectName() + QLatin1String("SourceFilesModel")); return model; @@ -1039,12 +1054,7 @@ void DebuggerEngine::updateViews() bool DebuggerEngine::isSlaveEngine() const { - return d->m_isSlaveEngine; -} - -void DebuggerEngine::setSlaveEngine(bool value) -{ - d->m_isSlaveEngine = value; + return d->m_masterEngine != 0; } bool DebuggerEngine::debuggerActionsEnabled() const diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index dd974ce6e1b..9733fd86eaa 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -129,7 +129,8 @@ class DEBUGGER_EXPORT DebuggerEngine : public QObject Q_OBJECT public: - explicit DebuggerEngine(const DebuggerStartParameters &sp); + explicit DebuggerEngine(const DebuggerStartParameters &sp, + DebuggerEngine *parentEngine = 0); virtual ~DebuggerEngine(); typedef Internal::BreakpointId BreakpointId; @@ -138,7 +139,7 @@ public: virtual void updateWatchData(const Internal::WatchData &data, const Internal::WatchUpdateFlags & flags = Internal::WatchUpdateFlags()); - void startDebugger(DebuggerRunControl *runControl); + virtual void startDebugger(DebuggerRunControl *runControl); virtual void watchPoint(const QPoint &); virtual void openMemoryView(quint64 addr); @@ -213,13 +214,13 @@ public: const DebuggerStartParameters &startParameters() const; DebuggerStartParameters &startParameters(); - Internal::ModulesHandler *modulesHandler() const; - Internal::RegisterHandler *registerHandler() const; - Internal::StackHandler *stackHandler() const; - Internal::ThreadsHandler *threadsHandler() const; - Internal::WatchHandler *watchHandler() const; - Internal::SourceFilesHandler *sourceFilesHandler() const; - Internal::BreakHandler *breakHandler() const; + virtual Internal::ModulesHandler *modulesHandler() const; + virtual Internal::RegisterHandler *registerHandler() const; + virtual Internal::StackHandler *stackHandler() const; + virtual Internal::ThreadsHandler *threadsHandler() const; + virtual Internal::WatchHandler *watchHandler() const; + virtual Internal::SourceFilesHandler *sourceFilesHandler() const; + virtual Internal::BreakHandler *breakHandler() const; virtual QAbstractItemModel *modulesModel() const; virtual QAbstractItemModel *registerModel() const; @@ -345,7 +346,7 @@ private: // Wrapper engine needs access to state of its subengines. friend class Internal::QmlCppEngine; void setState(DebuggerState state, bool forced = false); - void setSlaveEngine(bool value); + //void setSlaveEngine(bool value); friend class DebuggerEnginePrivate; DebuggerEnginePrivate *d; diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 04fc250881f..366400f84bf 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -405,11 +405,6 @@ const char * const SNAPSHOT_KEY = "Ctrl+D,Ctrl+S"; } // namespace Constants -namespace Internal { -void addCdb2OptionPages(QList<Core::IOptionsPage*> *); -} // namespace Cdb - - namespace Internal { // FIXME: Outdated? @@ -418,6 +413,7 @@ namespace Internal { // of the engine. That's good for not enabling the related ActiveX control // unnecessarily. +void addCdbOptionPages(QList<IOptionsPage*> *opts); void addGdbOptionPages(QList<IOptionsPage*> *opts); void addScriptOptionPages(QList<IOptionsPage*> *opts); void addTcfOptionPages(QList<IOptionsPage*> *opts); @@ -1094,7 +1090,6 @@ public slots: void handleExecStep() { - qDebug() << "CURRENT: " << currentEngine(); currentEngine()->resetLocation(); if (boolSetting(OperateByInstruction)) currentEngine()->executeStepI(); @@ -1965,7 +1960,6 @@ void DebuggerPluginPrivate::startDebugger(RunControl *rc) void DebuggerPluginPrivate::connectEngine(DebuggerEngine *engine) { - qDebug() << "CONNECT: " << engine; if (!engine) engine = dummyEngine(); @@ -3020,9 +3014,7 @@ void DebuggerPluginPrivate::extensionsInitialized() QList<Core::IOptionsPage *> engineOptionPages; if (m_cmdLineEnabledEngines & GdbEngineType) addGdbOptionPages(&engineOptionPages); -#ifdef Q_OS_WIN - addCdb2OptionPages(&engineOptionPages); -#endif + addCdbOptionPages(&engineOptionPages); #ifdef WITH_LLDB if (m_cmdLineEnabledEngines & LldbEngineType) addLldbOptionPages(&engineOptionPages); diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp index 45d27faf9ab..6012dc213e3 100644 --- a/src/plugins/debugger/debuggerrunner.cpp +++ b/src/plugins/debugger/debuggerrunner.cpp @@ -70,20 +70,20 @@ using namespace ProjectExplorer; using namespace Debugger::Internal; namespace Debugger { - namespace Internal { + bool isCdbEngineEnabled(); // Check the configuration page ConfigurationCheck checkCdbConfiguration(ToolChainType toolChain); -DebuggerEngine *createCdbEngine(const DebuggerStartParameters &, QString *error); -} - -namespace Internal { -DebuggerEngine *createGdbEngine(const DebuggerStartParameters &); +DebuggerEngine *createCdbEngine(const DebuggerStartParameters &, + DebuggerEngine *masterEngine, QString *error); +DebuggerEngine *createGdbEngine(const DebuggerStartParameters &, + DebuggerEngine *masterEngine); DebuggerEngine *createScriptEngine(const DebuggerStartParameters &); DebuggerEngine *createPdbEngine(const DebuggerStartParameters &); DebuggerEngine *createTcfEngine(const DebuggerStartParameters &); -DebuggerEngine *createQmlEngine(const DebuggerStartParameters &); +DebuggerEngine *createQmlEngine(const DebuggerStartParameters &, + DebuggerEngine *masterEngine); DebuggerEngine *createQmlCppEngine(const DebuggerStartParameters &); DebuggerEngine *createLldbEngine(const DebuggerStartParameters &); @@ -315,13 +315,13 @@ DebuggerRunControl::DebuggerRunControl(RunConfiguration *runConfiguration, switch (engineType) { case GdbEngineType: - d->m_engine = createGdbEngine(sp); + d->m_engine = createGdbEngine(sp, 0); break; case ScriptEngineType: d->m_engine = createScriptEngine(sp); break; case CdbEngineType: - d->m_engine = Internal::createCdbEngine(sp, &d->m_errorMessage); + d->m_engine = createCdbEngine(sp, 0, &d->m_errorMessage); break; case PdbEngineType: d->m_engine = createPdbEngine(sp); @@ -330,7 +330,7 @@ DebuggerRunControl::DebuggerRunControl(RunConfiguration *runConfiguration, d->m_engine = createTcfEngine(sp); break; case QmlEngineType: - d->m_engine = createQmlEngine(sp); + d->m_engine = createQmlEngine(sp, 0); break; case QmlCppEngineType: d->m_engine = createQmlCppEngine(sp); @@ -406,7 +406,7 @@ DEBUGGER_EXPORT ConfigurationCheck checkDebugConfiguration(ToolChainType toolCha } break; case ToolChain_MSVC: - result = Internal::checkCdbConfiguration(toolChain); + result = checkCdbConfiguration(toolChain); if (!result) { result.errorMessage += msgEngineNotAvailable("Cdb"); result.settingsPage = QLatin1String("Cdb"); diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 2b1a32713b0..57190e22b71 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -176,8 +176,9 @@ static QByteArray parsePlainConsoleStream(const GdbResponse &response) // /////////////////////////////////////////////////////////////////////// -GdbEngine::GdbEngine(const DebuggerStartParameters &startParameters) - : DebuggerEngine(startParameters) +GdbEngine::GdbEngine(const DebuggerStartParameters &startParameters, + DebuggerEngine *masterEngine) + : DebuggerEngine(startParameters, masterEngine) { setObjectName(QLatin1String("GdbEngine")); @@ -4495,9 +4496,10 @@ void GdbEngine::handleRemoteSetupFailed(const QString &message) // Factory // -DebuggerEngine *createGdbEngine(const DebuggerStartParameters &startParameters) +DebuggerEngine *createGdbEngine(const DebuggerStartParameters &startParameters, + DebuggerEngine *masterEngine) { - return new GdbEngine(startParameters); + return new GdbEngine(startParameters, masterEngine); } void addGdbOptionPages(QList<Core::IOptionsPage *> *opts) diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h index ae0826ad343..ea356246f54 100644 --- a/src/plugins/debugger/gdb/gdbengine.h +++ b/src/plugins/debugger/gdb/gdbengine.h @@ -70,7 +70,6 @@ class CoreGdbAdapter; class LocalPlainGdbAdapter; class RemoteGdbServerAdapter; class TrkGdbAdapter; -class QmlCppEngine; enum DebuggingHelperState { @@ -86,7 +85,8 @@ class GdbEngine : public Debugger::DebuggerEngine Q_OBJECT public: - explicit GdbEngine(const DebuggerStartParameters &startParameters); + GdbEngine(const DebuggerStartParameters &startParameters, + DebuggerEngine *masterEngine); ~GdbEngine(); AbstractGdbAdapter *gdbAdapter() const { return m_gdbAdapter; } @@ -101,7 +101,6 @@ private: friend class RemotePlainGdbAdapter; friend class TrkGdbAdapter; friend class TcfTrkGdbAdapter; - friend class QmlCppEngine; private: ////////// General Interface ////////// diff --git a/src/plugins/debugger/qml/qmlcppengine.cpp b/src/plugins/debugger/qml/qmlcppengine.cpp index 97ea9b07c76..a93cbd6ffdc 100644 --- a/src/plugins/debugger/qml/qmlcppengine.cpp +++ b/src/plugins/debugger/qml/qmlcppengine.cpp @@ -4,8 +4,6 @@ #include "debuggermainwindow.h" #include "debuggercore.h" -#include "gdb/gdbengine.h" - #include <qmljseditor/qmljseditorconstants.h> #include <coreplugin/editormanager/editormanager.h> #include <coreplugin/editormanager/ieditor.h> @@ -14,18 +12,18 @@ namespace Debugger { namespace Internal { -DebuggerEngine *createCdbEngine(const DebuggerStartParameters &, QString *); -} -namespace Internal { const int ConnectionWaitTimeMs = 5000; -DebuggerEngine *createGdbEngine(const DebuggerStartParameters &); -DebuggerEngine *createQmlEngine(const DebuggerStartParameters &); +DebuggerEngine *createCdbEngine(const DebuggerStartParameters &, + DebuggerEngine *masterEngine, QString *); +DebuggerEngine *createGdbEngine(const DebuggerStartParameters &, + DebuggerEngine *masterEngine); +DebuggerEngine *createQmlEngine(const DebuggerStartParameters &, + DebuggerEngine *masterEngine); DebuggerEngine *createQmlCppEngine(const DebuggerStartParameters &sp) { - qDebug() << "CREATING QMLCPPENGINE"; QmlCppEngine *newEngine = new QmlCppEngine(sp); if (newEngine->cppEngine()) return newEngine; @@ -58,22 +56,19 @@ QmlCppEnginePrivate::QmlCppEnginePrivate() QmlCppEngine::QmlCppEngine(const DebuggerStartParameters &sp) : DebuggerEngine(sp), d(new QmlCppEnginePrivate) { - d->m_qmlEngine = createQmlEngine(sp); + d->m_qmlEngine = createQmlEngine(sp, this); if (startParameters().cppEngineType == GdbEngineType) { - d->m_cppEngine = createGdbEngine(sp); + d->m_cppEngine = createGdbEngine(sp, this); } else { QString errorMessage; - d->m_cppEngine = Debugger::Internal::createCdbEngine(sp, &errorMessage); + d->m_cppEngine = Debugger::Internal::createCdbEngine(sp, this, &errorMessage); if (!d->m_cppEngine) { qWarning("%s", qPrintable(errorMessage)); return; } } - d->m_cppEngine->setSlaveEngine(true); - d->m_qmlEngine->setSlaveEngine(true); - d->m_activeEngine = d->m_cppEngine; connect(d->m_cppEngine, SIGNAL(stateChanged(DebuggerState)), SLOT(masterEngineStateChanged(DebuggerState))); @@ -122,7 +117,7 @@ void QmlCppEngine::setActiveEngine(DebuggerLanguage language) } if (previousEngine != d->m_activeEngine) { showStatusMessage(tr("%1 debugger activated").arg(engineName)); - //debuggerCore()->displayDebugger(d->m_activeEngine, updateEngine); + debuggerCore()->displayDebugger(d->m_activeEngine, updateEngine); } } @@ -310,18 +305,7 @@ void QmlCppEngine::detachDebugger() void QmlCppEngine::executeStep() { - qDebug() << "CPP ENGINE: " << d->m_cppEngine; - if (d->m_activeEngine == d->m_cppEngine) { - d->m_cppEngine->executeStep(); - } else { - QByteArray ba = - "-break-insert -f 'myns::QScript::FunctionWrapper::proxyCall'"; - GdbEngine *cppEngine = qobject_cast<GdbEngine *>(d->m_cppEngine); - qDebug() << "CPP ENGINE: " << cppEngine << d->m_cppEngine; - if (cppEngine) - cppEngine->postCommand(ba); - d->m_qmlEngine->executeStep(); - } + d->m_activeEngine->executeStep(); } void QmlCppEngine::executeStepOut() @@ -331,14 +315,12 @@ void QmlCppEngine::executeStepOut() void QmlCppEngine::executeNext() { - qDebug() << "NEXT"; d->m_activeEngine->executeNext(); } void QmlCppEngine::executeStepI() { - qDebug() << "STEP I"; - d->m_activeEngine->executeStep(); + d->m_activeEngine->executeStepI(); } void QmlCppEngine::executeNextI() diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index 5a59dab5d65..494a5546313 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -172,8 +172,10 @@ QmlEnginePrivate::QmlEnginePrivate(QmlEngine *q) // /////////////////////////////////////////////////////////////////////// -QmlEngine::QmlEngine(const DebuggerStartParameters &startParameters) - : DebuggerEngine(startParameters), d(new QmlEnginePrivate(this)) +QmlEngine::QmlEngine(const DebuggerStartParameters &startParameters, + DebuggerEngine *masterEngine) + : DebuggerEngine(startParameters, masterEngine), + d(new QmlEnginePrivate(this)) { setObjectName(QLatin1String("QmlEngine")); } @@ -645,11 +647,6 @@ void QmlEngine::sendPing() sendMessage(reply); } -DebuggerEngine *createQmlEngine(const DebuggerStartParameters &sp) -{ - return new QmlEngine(sp); -} - unsigned QmlEngine::debuggerCapabilities() const { return AddWatcherCapability; @@ -934,6 +931,12 @@ void QmlEngine::logMessage(LogDirection direction, const QString &message) showMessage(msg, LogDebug); } +DebuggerEngine *createQmlEngine(const DebuggerStartParameters &sp, + DebuggerEngine *masterEngine) +{ + return new QmlEngine(sp, masterEngine); +} + } // namespace Internal } // namespace Debugger diff --git a/src/plugins/debugger/qml/qmlengine.h b/src/plugins/debugger/qml/qmlengine.h index 6df6629dcec..415d62faf21 100644 --- a/src/plugins/debugger/qml/qmlengine.h +++ b/src/plugins/debugger/qml/qmlengine.h @@ -51,7 +51,8 @@ class QmlEngine : public DebuggerEngine Q_OBJECT public: - explicit QmlEngine(const DebuggerStartParameters &startParameters); + QmlEngine(const DebuggerStartParameters &startParameters, + DebuggerEngine *masterEngine); ~QmlEngine(); void handleRemoteSetupDone(int port); -- GitLab