aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/debugger/debuggerrunner.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <[email protected]>2010-09-13 11:08:08 +0200
committerFriedemann Kleint <[email protected]>2010-09-13 11:08:08 +0200
commit342ab57db29cad5692a7e5919a413dd44f082993 (patch)
treea277f20f5b44806c6260b01d7765ae14b8dc414f /src/plugins/debugger/debuggerrunner.cpp
parent5c0743317543034dd35fee94baa173a37bb48494 (diff)
Debugger: Un-export GdbAdapters.
Reviewed-by: hjk Reviewed-by: Christian Kandeler <[email protected]>
Diffstat (limited to 'src/plugins/debugger/debuggerrunner.cpp')
-rw-r--r--src/plugins/debugger/debuggerrunner.cpp65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp
index a7cdeb680c5..a438b16eba1 100644
--- a/src/plugins/debugger/debuggerrunner.cpp
+++ b/src/plugins/debugger/debuggerrunner.cpp
@@ -35,6 +35,10 @@
#include "debuggerplugin.h"
#include "debuggerstringutils.h"
#include "debuggeruiswitcher.h"
+#include "gdb/gdbengine.h"
+#include "gdb/remotegdbserveradapter.h"
+#include "gdb/remoteplaingdbadapter.h"
+#include "qml/qmlcppengine.h"
#ifdef Q_OS_WIN
# include "peutils.h"
@@ -397,6 +401,7 @@ void DebuggerRunControl::createEngine(const DebuggerStartParameters &startParams
switch (engineType) {
case GdbEngineType:
m_engine = createGdbEngine(sp);
+ initGdbEngine(qobject_cast<Internal::GdbEngine *>(m_engine));
break;
case ScriptEngineType:
m_engine = createScriptEngine(sp);
@@ -415,6 +420,8 @@ void DebuggerRunControl::createEngine(const DebuggerStartParameters &startParams
break;
case QmlCppEngineType:
m_engine = createQmlCppEngine(sp);
+ if (Internal::GdbEngine *embeddedGdbEngine = gdbEngine())
+ initGdbEngine(embeddedGdbEngine);
break;
default: {
// Could not find anything suitable.
@@ -430,6 +437,21 @@ void DebuggerRunControl::createEngine(const DebuggerStartParameters &startParams
}
}
+void DebuggerRunControl::initGdbEngine(Internal::GdbEngine *engine)
+{
+ QTC_ASSERT(engine, return)
+
+ // Forward adapter signals.
+ Internal::AbstractGdbAdapter *adapter = engine->gdbAdapter();
+ if (RemotePlainGdbAdapter *rpga = qobject_cast<RemotePlainGdbAdapter *>(adapter)) {
+ connect(rpga, SIGNAL(requestSetup()), this,
+ SIGNAL(gdbAdapterRequestSetup()));
+ } else if (RemoteGdbServerAdapter *rgsa = qobject_cast<RemoteGdbServerAdapter *>(adapter)) {
+ connect(rgsa, SIGNAL(requestSetup()),
+ this, SIGNAL(gdbAdapterRequestSetup()));
+ }
+}
+
QString DebuggerRunControl::displayName() const
{
QTC_ASSERT(m_engine, return QString());
@@ -592,4 +614,47 @@ Internal::DebuggerEngine *DebuggerRunControl::engine()
return m_engine;
}
+Internal::GdbEngine *DebuggerRunControl::gdbEngine() const
+{
+ QTC_ASSERT(m_engine, return 0);
+ if (GdbEngine *gdbEngine = qobject_cast<GdbEngine *>(m_engine))
+ return gdbEngine;
+ if (QmlCppEngine * const qmlEngine = qobject_cast<QmlCppEngine *>(m_engine))
+ if (GdbEngine *embeddedGdbEngine = qobject_cast<GdbEngine *>(qmlEngine->cppEngine()))
+ return embeddedGdbEngine;
+ return 0;
+}
+
+Internal::AbstractGdbAdapter *DebuggerRunControl::gdbAdapter() const
+{
+ GdbEngine *engine = gdbEngine();
+ QTC_ASSERT(engine, return 0)
+ return engine->gdbAdapter();
+}
+
+void DebuggerRunControl::remoteGdbHandleSetupDone()
+{
+ Internal::AbstractGdbAdapter *adapter = gdbAdapter();
+ QTC_ASSERT(adapter, return);
+ if (RemotePlainGdbAdapter *rpga = qobject_cast<RemotePlainGdbAdapter *>(adapter)) {
+ rpga->handleSetupDone();
+ } else if (RemoteGdbServerAdapter *rgsa = qobject_cast<RemoteGdbServerAdapter *>(adapter)) {
+ rgsa->handleSetupDone();
+ } else {
+ QTC_ASSERT(false, /* */ );
+ }
+}
+
+void DebuggerRunControl::remoteGdbHandleSetupFailed(const QString &message)
+{
+ Internal::AbstractGdbAdapter *adapter = gdbAdapter();
+ QTC_ASSERT(adapter, return);
+ if (RemotePlainGdbAdapter *rpga = qobject_cast<RemotePlainGdbAdapter *>(adapter)) {
+ rpga->handleSetupFailed(message);
+ } else if (RemoteGdbServerAdapter *rgsa = qobject_cast<RemoteGdbServerAdapter *>(adapter)) {
+ rgsa->handleSetupFailed(message);
+ } else {
+ QTC_ASSERT(false, /* */ );
+ }
+}
} // namespace Debugger