forked from qt-creator/qt-creator
Debugger: Fix debugging external executables/attaching to pid.
... by creating a default run configuration.
This commit is contained in:
@@ -1221,6 +1221,9 @@ void DebuggerPlugin::startExternalApplication()
|
|||||||
m_manager->breakByFunctionMain();
|
m_manager->breakByFunctionMain();
|
||||||
|
|
||||||
QSharedPointer<RunConfiguration> rc = activeRunConfiguration();
|
QSharedPointer<RunConfiguration> rc = activeRunConfiguration();
|
||||||
|
if (rc.isNull())
|
||||||
|
rc = DebuggerRunner::createDefaultRunConfiguration(sp->executable);
|
||||||
|
|
||||||
if (RunControl *runControl = m_debuggerRunner
|
if (RunControl *runControl = m_debuggerRunner
|
||||||
->run(rc, ProjectExplorer::Constants::DEBUGMODE, sp, StartExternal))
|
->run(rc, ProjectExplorer::Constants::DEBUGMODE, sp, StartExternal))
|
||||||
runControl->start();
|
runControl->start();
|
||||||
@@ -1244,6 +1247,8 @@ void DebuggerPlugin::attachExternalApplication(qint64 pid, const QString &crashP
|
|||||||
sp->crashParameter = crashParameter;
|
sp->crashParameter = crashParameter;
|
||||||
const DebuggerStartMode dsm = crashParameter.isEmpty() ? AttachExternal : AttachCrashedExternal;
|
const DebuggerStartMode dsm = crashParameter.isEmpty() ? AttachExternal : AttachCrashedExternal;
|
||||||
QSharedPointer<RunConfiguration> rc = activeRunConfiguration();
|
QSharedPointer<RunConfiguration> rc = activeRunConfiguration();
|
||||||
|
if (rc.isNull())
|
||||||
|
rc = DebuggerRunner::createDefaultRunConfiguration();
|
||||||
if (RunControl *runControl = m_debuggerRunner
|
if (RunControl *runControl = m_debuggerRunner
|
||||||
->run(rc, ProjectExplorer::Constants::DEBUGMODE, sp, dsm))
|
->run(rc, ProjectExplorer::Constants::DEBUGMODE, sp, dsm))
|
||||||
runControl->start();
|
runControl->start();
|
||||||
|
@@ -50,6 +50,34 @@ using ProjectExplorer::RunConfiguration;
|
|||||||
using ProjectExplorer::RunControl;
|
using ProjectExplorer::RunControl;
|
||||||
using ProjectExplorer::ApplicationRunConfiguration;
|
using ProjectExplorer::ApplicationRunConfiguration;
|
||||||
|
|
||||||
|
// A default run configuration for external executables or attaching to
|
||||||
|
// running processes by id.
|
||||||
|
class DefaultApplicationRunConfiguration : public ProjectExplorer::ApplicationRunConfiguration
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit DefaultApplicationRunConfiguration(const QString &executable = QString());
|
||||||
|
|
||||||
|
virtual QString executable() const { return m_executable; }
|
||||||
|
virtual RunMode runMode() const { return Gui; }
|
||||||
|
virtual QString workingDirectory() const { return QString(); }
|
||||||
|
virtual QStringList commandLineArguments() const { return QStringList(); }
|
||||||
|
virtual ProjectExplorer::Environment environment() const
|
||||||
|
{ return ProjectExplorer::Environment(); }
|
||||||
|
virtual QString dumperLibrary() const { return QString(); }
|
||||||
|
virtual QStringList dumperLibraryLocations() const { return QStringList(); }
|
||||||
|
virtual ProjectExplorer::ToolChain::ToolChainType toolChainType() const
|
||||||
|
{ return ProjectExplorer::ToolChain::UNKNOWN; }
|
||||||
|
virtual QWidget *configurationWidget() { return 0; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
const QString m_executable;
|
||||||
|
};
|
||||||
|
|
||||||
|
DefaultApplicationRunConfiguration::DefaultApplicationRunConfiguration(const QString &executable) :
|
||||||
|
ProjectExplorer::ApplicationRunConfiguration(0),
|
||||||
|
m_executable(executable)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
@@ -73,6 +101,11 @@ QString DebuggerRunner::displayName() const
|
|||||||
return tr("Debug");
|
return tr("Debug");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RunConfigurationPtr DebuggerRunner::createDefaultRunConfiguration(const QString &executable)
|
||||||
|
{
|
||||||
|
return RunConfigurationPtr(new DefaultApplicationRunConfiguration(executable));
|
||||||
|
}
|
||||||
|
|
||||||
RunControl *DebuggerRunner::run(RunConfigurationPtr runConfiguration,
|
RunControl *DebuggerRunner::run(RunConfigurationPtr runConfiguration,
|
||||||
const QString &mode,
|
const QString &mode,
|
||||||
const QSharedPointer<DebuggerStartParameters> &sp,
|
const QSharedPointer<DebuggerStartParameters> &sp,
|
||||||
|
@@ -70,6 +70,8 @@ public:
|
|||||||
const QSharedPointer<DebuggerStartParameters> &sp,
|
const QSharedPointer<DebuggerStartParameters> &sp,
|
||||||
DebuggerStartMode startMode);
|
DebuggerStartMode startMode);
|
||||||
|
|
||||||
|
static RunConfigurationPtr createDefaultRunConfiguration(const QString &executable = QString());
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QSharedPointer<DebuggerStartParameters> m_startParameters;
|
QSharedPointer<DebuggerStartParameters> m_startParameters;
|
||||||
DebuggerManager *m_manager;
|
DebuggerManager *m_manager;
|
||||||
|
Reference in New Issue
Block a user