void DebugJob::start() { KConfigGroup grp = m_launchcfg->config(); KDevelop::EnvironmentGroupList l(KGlobal::config()); IExecutePlugin* iface = KDevelop::ICore::self()->pluginController()->pluginForExtension("org.kdevelop.IExecutePlugin")->extension<IExecutePlugin>(); Q_ASSERT(iface); QString err; QString executable = iface->executable( m_launchcfg, err ).toLocalFile(); QString envgrp = iface->environmentGroup( m_launchcfg ); if( !err.isEmpty() ) { setError( -1 ); setErrorText( err ); emitResult(); return; } if( envgrp.isEmpty() ) { kWarning() << i18n("No environment group specified, looks like a broken " "configuration, please check run configuration '%1'. " "Using default environment group.", m_launchcfg->name() ); envgrp = l.defaultGroup(); } QStringList arguments = iface->arguments( m_launchcfg, err ); if( !err.isEmpty() ) { setError( -1 ); setErrorText( err ); } if( error() != 0 ) { emitResult(); return; } setStandardToolView(KDevelop::IOutputView::DebugView); setBehaviours(KDevelop::IOutputView::Behaviours(KDevelop::IOutputView::AllowUserClose) | KDevelop::IOutputView::AutoScroll); setModel( new KDevelop::OutputModel ); setTitle(m_launchcfg->name()); QString startWith = grp.readEntry(GDBDebugger::startWithEntry, QString("ApplicationOutput")); if (startWith == "GdbConsole") { setVerbosity(Silent); } else if (startWith == "FrameStack") { setVerbosity(Silent); } else { setVerbosity(Verbose); } startOutput(); m_session->startProgram( m_launchcfg ); }
KJob* GdbLauncher::start(const QString& launchMode, KDevelop::ILaunchConfiguration* cfg) { Q_ASSERT(cfg); if( !cfg ) { return 0; } if( launchMode == "debug" ) { IExecutePlugin* iface = KDevelop::ICore::self()->pluginController()->pluginForExtension("org.kdevelop.IExecutePlugin")->extension<IExecutePlugin>(); Q_ASSERT(iface); QList<KJob*> l; KJob* depjob = iface->dependecyJob(cfg); if( depjob ) { l << depjob; } l << new GDBDebugger::DebugJob( m_plugin, cfg ); return new KDevelop::ExecuteCompositeJob( KDevelop::ICore::self()->runController(), l ); } kWarning() << "Unknown launch mode" << launchMode << "for config:" << cfg->name(); return 0; }
KJob* Launcher::start(const QString& launchMode, KDevelop::ILaunchConfiguration* cfg) { Q_ASSERT(cfg); if (!cfg) return nullptr; if (m_modes.contains(launchMode)) { IExecutePlugin* iface = KDevelop::ICore::self()->pluginController()->pluginForExtension("org.kdevelop.IExecutePlugin")->extension<IExecutePlugin>(); Q_ASSERT(iface); QList<KJob*> l; KJob* depjob = iface->dependencyJob(cfg); if (depjob) l << depjob; l << Job::createToolJob(cfg, m_plugin, KDevelop::ICore::self()->runController()); return new KDevelop::ExecuteCompositeJob(KDevelop::ICore::self()->runController(), l); } qCWarning(KDEV_VALGRIND) << "Unknown launch mode " << launchMode << "for config:" << cfg->name(); return nullptr; }
NativeAppJob::NativeAppJob(QObject* parent, KDevelop::ILaunchConfiguration* cfg) : KDevelop::OutputExecuteJob( parent ) , m_cfgname(cfg->name()) { setCapabilities(Killable); IExecutePlugin* iface = KDevelop::ICore::self()->pluginController()->pluginForExtension(QStringLiteral("org.kdevelop.IExecutePlugin"), QStringLiteral("kdevexecute"))->extension<IExecutePlugin>(); Q_ASSERT(iface); KDevelop::EnvironmentGroupList l(KSharedConfig::openConfig()); QString envgrp = iface->environmentGroup(cfg); QString err; QUrl executable = iface->executable( cfg, err ); if( !err.isEmpty() ) { setError( -1 ); setErrorText( err ); return; } if( envgrp.isEmpty() ) { qWarning() << "Launch Configuration:" << cfg->name() << i18n("No environment group specified, looks like a broken " "configuration, please check run configuration '%1'. " "Using default environment group.", cfg->name() ); envgrp = l.defaultGroup(); } setEnvironmentProfile(envgrp); QStringList arguments = iface->arguments( cfg, err ); if( !err.isEmpty() ) { setError( -2 ); setErrorText( err ); } if( error() != 0 ) { qWarning() << "Launch Configuration:" << cfg->name() << "oops, problem" << errorText(); return; } setStandardToolView(KDevelop::IOutputView::RunView); setBehaviours(KDevelop::IOutputView::AllowUserClose | KDevelop::IOutputView::AutoScroll); setFilteringStrategy(OutputModel::NativeAppErrorFilter); setProperties(DisplayStdout | DisplayStderr); // Now setup the process parameters QUrl wc = iface->workingDirectory( cfg ); if( !wc.isValid() || wc.isEmpty() ) { wc = QUrl::fromLocalFile( QFileInfo( executable.toLocalFile() ).absolutePath() ); } setWorkingDirectory( wc ); qCDebug(PLUGIN_EXECUTE) << "setting app:" << executable << arguments; if (iface->useTerminal(cfg)) { QStringList args = KShell::splitArgs(iface->terminal(cfg)); for (QStringList::iterator it = args.begin(); it != args.end(); ++it) { if (*it == QLatin1String("%exe")) { *it = KShell::quoteArg(executable.toLocalFile()); } else if (*it == QLatin1String("%workdir")) { *it = KShell::quoteArg(wc.toLocalFile()); } } args.append( arguments ); *this << args; } else { *this << executable.toLocalFile(); *this << arguments; } setJobName(cfg->name()); }