aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/debugger/debuggerrunner.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <[email protected]>2010-09-14 08:34:07 +0200
committerFriedemann Kleint <[email protected]>2010-09-14 08:34:07 +0200
commit83e60a1747f02368b2da68a3634fd03aca0beb95 (patch)
treec9d0f86b803ce4d2957eee3834efa95bd58a0f1d /src/plugins/debugger/debuggerrunner.cpp
parent7c224768ee204ed8169ed009cbf6480735973d75 (diff)
Debugger: Unexport GdbEngine, d-pointer for run control.
Diffstat (limited to 'src/plugins/debugger/debuggerrunner.cpp')
-rw-r--r--src/plugins/debugger/debuggerrunner.cpp123
1 files changed, 73 insertions, 50 deletions
diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp
index 41d084aa8b3..fbebb43aae6 100644
--- a/src/plugins/debugger/debuggerrunner.cpp
+++ b/src/plugins/debugger/debuggerrunner.cpp
@@ -227,14 +227,32 @@ QWidget *DebuggerRunControlFactory::createConfigurationWidget
//
////////////////////////////////////////////////////////////////////////
-DebuggerRunControl::DebuggerRunControl(RunConfiguration *runConfiguration,
- DebuggerEngineType enabledEngines, const DebuggerStartParameters &sp)
- : RunControl(runConfiguration, ProjectExplorer::Constants::DEBUGMODE)
- , m_myRunConfiguration(runConfiguration)
+struct DebuggerRunnerPrivate {
+ explicit DebuggerRunnerPrivate(RunConfiguration *runConfiguration,
+ DebuggerEngineType enabledEngines);
+
+ DebuggerEngine *m_engine;
+ const QWeakPointer<RunConfiguration> m_myRunConfiguration;
+ bool m_running;
+ bool m_started;
+ const DebuggerEngineType m_enabledEngines;
+ QString m_errorMessage;
+ QString m_settingsIdHint;
+};
+
+DebuggerRunnerPrivate::DebuggerRunnerPrivate(RunConfiguration *runConfiguration,
+ DebuggerEngineType enabledEngines) :
+ m_myRunConfiguration(runConfiguration)
, m_running(false)
, m_started(false)
, m_enabledEngines(enabledEngines)
+{
+}
+DebuggerRunControl::DebuggerRunControl(RunConfiguration *runConfiguration,
+ DebuggerEngineType enabledEngines, const DebuggerStartParameters &sp)
+ : RunControl(runConfiguration, ProjectExplorer::Constants::DEBUGMODE),
+ d(new DebuggerRunnerPrivate(runConfiguration, enabledEngines))
{
connect(this, SIGNAL(finished()), this, SLOT(handleFinished()));
DebuggerStartParameters startParams = sp;
@@ -244,16 +262,16 @@ DebuggerRunControl::DebuggerRunControl(RunConfiguration *runConfiguration,
DebuggerRunControl::~DebuggerRunControl()
{
disconnect();
- DebuggerEngine *engine = m_engine;
- m_engine = 0;
+ DebuggerEngine *engine = d->m_engine;
+ d->m_engine = 0;
engine->disconnect();
delete engine;
}
const DebuggerStartParameters &DebuggerRunControl::startParameters() const
{
- QTC_ASSERT(m_engine, return *(new DebuggerStartParameters()));
- return m_engine->startParameters();
+ QTC_ASSERT(d->m_engine, return *(new DebuggerStartParameters()));
+ return d->m_engine->startParameters();
}
static DebuggerEngineType engineForToolChain(int toolChainType)
@@ -290,21 +308,21 @@ static DebuggerEngineType engineForToolChain(int toolChainType)
DebuggerEngineType DebuggerRunControl::engineForExecutable(const QString &executable)
{
if (executable.endsWith(_("qmlviewer"))) {
- if (m_enabledEngines & QmlEngineType)
+ if (d->m_enabledEngines & QmlEngineType)
return QmlEngineType;
- m_errorMessage = msgEngineNotAvailable("Qml Engine");
+ d->m_errorMessage = msgEngineNotAvailable("Qml Engine");
}
if (executable.endsWith(_(".js"))) {
- if (m_enabledEngines & ScriptEngineType)
+ if (d->m_enabledEngines & ScriptEngineType)
return ScriptEngineType;
- m_errorMessage = msgEngineNotAvailable("Script Engine");
+ d->m_errorMessage = msgEngineNotAvailable("Script Engine");
}
if (executable.endsWith(_(".py"))) {
- if (m_enabledEngines & PdbEngineType)
+ if (d->m_enabledEngines & PdbEngineType)
return PdbEngineType;
- m_errorMessage = msgEngineNotAvailable("Pdb Engine");
+ d->m_errorMessage = msgEngineNotAvailable("Pdb Engine");
}
#ifdef Q_OS_WIN
@@ -314,9 +332,9 @@ DebuggerEngineType DebuggerRunControl::engineForExecutable(const QString &execut
// If a file has PDB files, it has been compiled by VS.
QStringList pdbFiles;
- if (!getPDBFiles(executable, &pdbFiles, &m_errorMessage)) {
+ if (!getPDBFiles(executable, &pdbFiles, &d->m_errorMessage)) {
qWarning("Cannot determine type of executable %s: %s",
- qPrintable(executable), qPrintable(m_errorMessage));
+ qPrintable(executable), qPrintable(d->m_errorMessage));
return NoEngineType;
}
if (pdbFiles.empty())
@@ -324,12 +342,12 @@ DebuggerEngineType DebuggerRunControl::engineForExecutable(const QString &execut
// We need the CDB debugger in order to be able to debug VS
// executables
- if (checkDebugConfiguration(ToolChain::MSVC, &m_errorMessage, 0, &m_settingsIdHint))
+ if (checkDebugConfiguration(ToolChain::MSVC, &d->m_errorMessage, 0, &d->m_settingsIdHint))
return CdbEngineType;
#else
- if (m_enabledEngines & GdbEngineType)
+ if (d->m_enabledEngines & GdbEngineType)
return GdbEngineType;
- m_errorMessage = msgEngineNotAvailable("Gdb Engine");
+ d->m_errorMessage = msgEngineNotAvailable("Gdb Engine");
#endif
return NoEngineType;
@@ -346,11 +364,11 @@ DebuggerEngineType DebuggerRunControl::engineForMode(DebuggerStartMode startMode
if (startMode != AttachToRemote)
return CdbEngineType;
return GdbEngineType;
- m_errorMessage = msgEngineNotAvailable("Gdb Engine");
+ d->m_errorMessage = msgEngineNotAvailable("Gdb Engine");
return NoEngineType;
#else
Q_UNUSED(startMode)
- // m_errorMessage = msgEngineNotAvailable("Gdb Engine");
+ // d->m_errorMessage = msgEngineNotAvailable("Gdb Engine");
return GdbEngineType;
#endif
}
@@ -400,26 +418,26 @@ void DebuggerRunControl::createEngine(const DebuggerStartParameters &startParams
switch (engineType) {
case GdbEngineType:
- m_engine = createGdbEngine(sp);
- initGdbEngine(qobject_cast<Internal::GdbEngine *>(m_engine));
+ d->m_engine = createGdbEngine(sp);
+ initGdbEngine(qobject_cast<Internal::GdbEngine *>(d->m_engine));
break;
case ScriptEngineType:
- m_engine = Internal::createScriptEngine(sp);
+ d->m_engine = Internal::createScriptEngine(sp);
break;
case CdbEngineType:
- m_engine = Internal::createCdbEngine(sp);
+ d->m_engine = Internal::createCdbEngine(sp);
break;
case PdbEngineType:
- m_engine = Internal::createPdbEngine(sp);
+ d->m_engine = Internal::createPdbEngine(sp);
break;
case TcfEngineType:
- m_engine = Internal::createTcfEngine(sp);
+ d->m_engine = Internal::createTcfEngine(sp);
break;
case QmlEngineType:
- m_engine = Internal::createQmlEngine(sp);
+ d->m_engine = Internal::createQmlEngine(sp);
break;
case QmlCppEngineType:
- m_engine = Internal::createQmlCppEngine(sp);
+ d->m_engine = Internal::createQmlCppEngine(sp);
if (Internal::GdbEngine *embeddedGdbEngine = gdbEngine())
initGdbEngine(embeddedGdbEngine);
break;
@@ -428,10 +446,10 @@ void DebuggerRunControl::createEngine(const DebuggerStartParameters &startParams
debuggingFinished();
// Create Message box with possibility to go to settings
const QString msg = tr("Cannot debug '%1' (tool chain: '%2'): %3")
- .arg(sp.executable, toolChainName(sp.toolChainType), m_errorMessage);
+ .arg(sp.executable, toolChainName(sp.toolChainType), d->m_errorMessage);
Core::ICore::instance()->showWarningWithOptions(tr("Warning"),
msg, QString(), QLatin1String(Constants::DEBUGGER_SETTINGS_CATEGORY),
- m_settingsIdHint);
+ d->m_settingsIdHint);
break;
}
}
@@ -454,13 +472,13 @@ void DebuggerRunControl::initGdbEngine(Internal::GdbEngine *engine)
QString DebuggerRunControl::displayName() const
{
- QTC_ASSERT(m_engine, return QString());
- return m_engine->startParameters().displayName;
+ QTC_ASSERT(d->m_engine, return QString());
+ return d->m_engine->startParameters().displayName;
}
void DebuggerRunControl::setCustomEnvironment(ProjectExplorer::Environment env)
{
- m_engine->startParameters().environment = env.toStringList();
+ d->m_engine->startParameters().environment = env.toStringList();
}
bool DebuggerRunControl::checkDebugConfiguration(int toolChain,
@@ -506,8 +524,8 @@ bool DebuggerRunControl::checkDebugConfiguration(int toolChain,
void DebuggerRunControl::start()
{
- QTC_ASSERT(m_engine, return);
- const DebuggerStartParameters &sp = m_engine->startParameters();
+ QTC_ASSERT(d->m_engine, return);
+ const DebuggerStartParameters &sp = d->m_engine->startParameters();
QString errorMessage;
QString settingsCategory;
@@ -526,13 +544,13 @@ void DebuggerRunControl::start()
DebuggerUISwitcher::instance()->aboutToStartDebugger();
const QString message = tr("Starting debugger '%1' for tool chain '%2'...").
- arg(m_engine->objectName(), toolChainName(sp.toolChainType));
+ arg(d->m_engine->objectName(), toolChainName(sp.toolChainType));
plugin()->showMessage(message, StatusBar);
plugin()->showMessage(DebuggerSettings::instance()->dump(), LogDebug);
plugin()->runControlStarted(this);
engine()->startDebugger(this);
- m_running = true;
+ d->m_running = true;
emit addToOutputWindowInline(this, tr("Debugging starts"), false);
emit addToOutputWindowInline(this, "\n", false);
emit started();
@@ -541,7 +559,7 @@ void DebuggerRunControl::start()
void DebuggerRunControl::startFailed()
{
emit addToOutputWindowInline(this, tr("Debugging has failed"), false);
- m_running = false;
+ d->m_running = false;
emit finished();
engine()->handleStartFailed();
}
@@ -586,40 +604,40 @@ bool DebuggerRunControl::aboutToStop() const
RunControl::StopResult DebuggerRunControl::stop()
{
- QTC_ASSERT(m_engine, return StoppedSynchronously);
- m_engine->quitDebugger();
+ QTC_ASSERT(d->m_engine, return StoppedSynchronously);
+ d->m_engine->quitDebugger();
return AsynchronousStop;
}
void DebuggerRunControl::debuggingFinished()
{
- m_running = false;
+ d->m_running = false;
emit finished();
}
bool DebuggerRunControl::isRunning() const
{
- return m_running;
+ return d->m_running;
}
DebuggerState DebuggerRunControl::state() const
{
- QTC_ASSERT(m_engine, return DebuggerNotReady);
- return m_engine->state();
+ QTC_ASSERT(d->m_engine, return DebuggerNotReady);
+ return d->m_engine->state();
}
DebuggerEngine *DebuggerRunControl::engine()
{
- QTC_ASSERT(m_engine, /**/);
- return m_engine;
+ QTC_ASSERT(d->m_engine, /**/);
+ return d->m_engine;
}
Internal::GdbEngine *DebuggerRunControl::gdbEngine() const
{
- QTC_ASSERT(m_engine, return 0);
- if (GdbEngine *gdbEngine = qobject_cast<GdbEngine *>(m_engine))
+ QTC_ASSERT(d->m_engine, return 0);
+ if (GdbEngine *gdbEngine = qobject_cast<GdbEngine *>(d->m_engine))
return gdbEngine;
- if (QmlCppEngine * const qmlEngine = qobject_cast<QmlCppEngine *>(m_engine))
+ if (QmlCppEngine * const qmlEngine = qobject_cast<QmlCppEngine *>(d->m_engine))
if (Internal::GdbEngine *embeddedGdbEngine = qobject_cast<GdbEngine *>(qmlEngine->cppEngine()))
return embeddedGdbEngine;
return 0;
@@ -667,4 +685,9 @@ void DebuggerRunControl::emitAppendMessage(const QString &m, bool isError)
{
emit appendMessage(this, m, isError);
}
+
+RunConfiguration *DebuggerRunControl::runConfiguration() const
+{
+ return d->m_myRunConfiguration.data();
+}
} // namespace Debugger