diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 5a7b1b7b33f3e27ef35e9ad1c6221f83a8e64f0a..659ec059c853a20fa333967aa095689f67e25cfd 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -1790,7 +1790,9 @@ void DebuggerPluginPrivate::startExternalApplication() && (sp.processArgs.front() == _("@tcf@") || sp.processArgs.front() == _("@sym@"))) sp.toolChainType = ToolChain::RVCT_ARMV5; - startDebugger(m_debuggerRunControlFactory->create(sp)); + + if (RunControl *rc = m_debuggerRunControlFactory->create(sp)) + startDebugger(rc); } void DebuggerPluginPrivate::notifyCurrentEngine(int role, const QVariant &value) @@ -1820,8 +1822,8 @@ void DebuggerPluginPrivate::attachExternalApplication sp.executable = binary; sp.crashParameter = crashParameter; sp.startMode = crashParameter.isEmpty() ? AttachExternal : AttachCrashedExternal; - DebuggerRunControl *rc = createDebugger(sp); - startDebugger(rc); + if (DebuggerRunControl *rc = createDebugger(sp)) + startDebugger(rc); } void DebuggerPluginPrivate::attachCore() @@ -1843,8 +1845,8 @@ void DebuggerPluginPrivate::attachCore(const QString &core, const QString &exe) sp.coreFile = core; sp.displayName = tr("Core file \"%1\"").arg(core); sp.startMode = AttachCore; - DebuggerRunControl *rc = createDebugger(sp); - startDebugger(rc); + if (DebuggerRunControl *rc = createDebugger(sp)) + startDebugger(rc); } void DebuggerPluginPrivate::attachRemote(const QString &spec) @@ -1856,8 +1858,8 @@ void DebuggerPluginPrivate::attachRemote(const QString &spec) sp.remoteArchitecture = spec.section('@', 2, 2); sp.displayName = tr("Remote: \"%1\"").arg(sp.remoteChannel); sp.startMode = AttachToRemote; - DebuggerRunControl *rc = createDebugger(sp); - startDebugger(rc); + if (DebuggerRunControl *rc = createDebugger(sp)) + startDebugger(rc); } void DebuggerPluginPrivate::startRemoteApplication() @@ -1902,7 +1904,8 @@ void DebuggerPluginPrivate::startRemoteApplication() sp.useServerStartScript = dlg.useServerStartScript(); sp.serverStartScript = dlg.serverStartScript(); sp.sysRoot = dlg.sysRoot(); - startDebugger(createDebugger(sp)); + if (RunControl *rc = createDebugger(sp)) + startDebugger(rc); } void DebuggerPluginPrivate::enableReverseDebuggingTriggered(const QVariant &value) @@ -1940,7 +1943,8 @@ void DebuggerPluginPrivate::attachRemoteTcf() sp.startMode = AttachTcf; if (dlg.useServerStartScript()) sp.serverStartScript = dlg.serverStartScript(); - startDebugger(createDebugger(sp)); + if (RunControl *rc = createDebugger(sp)) + startDebugger(rc); } bool DebuggerPluginPrivate::attachCmdLine() diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp index 03b2853f938971124fbd5ea0de8110fd132b7cca..89ffcc13701905d33739e43f6069fe9635c320b7 100644 --- a/src/plugins/debugger/debuggerrunner.cpp +++ b/src/plugins/debugger/debuggerrunner.cpp @@ -276,7 +276,8 @@ unsigned DebuggerRunnerPrivate::enabledEngines() const DebuggerRunnerPrivate::DebuggerRunnerPrivate(RunConfiguration *runConfiguration, unsigned enabledEngines) : - m_myRunConfiguration(runConfiguration) + m_engine(0) + , m_myRunConfiguration(runConfiguration) , m_running(false) , m_cmdLineEnabledEngines(enabledEngines) { @@ -439,10 +440,11 @@ void DebuggerRunControl::createEngine(const DebuggerStartParameters &startParams && !sp.executable.isEmpty()) engineType = engineForExecutable(enabledEngineTypes, sp.executable); - if (!engineType) + if (engineType == NoEngineType) engineType = engineForMode(enabledEngineTypes, sp.startMode); - if (engineType != QmlEngineType && (activeLangs & QmlLanguage)) { + if ((engineType != QmlEngineType && engineType != NoEngineType) + && (activeLangs & QmlLanguage)) { if (activeLangs & CppLanguage) { sp.cppEngineType = engineType; engineType = QmlCppEngineType;