debugger: let the gdb adapters access the engines start parameter instead of keeping a copy

This commit is contained in:
hjk
2009-09-23 10:14:53 +02:00
parent 89861828ee
commit d25066f8ad
7 changed files with 25 additions and 27 deletions

View File

@@ -81,12 +81,15 @@ public:
virtual void setEnvironment(const QStringList &env) = 0; virtual void setEnvironment(const QStringList &env) = 0;
virtual bool isTrkAdapter() const = 0; virtual bool isTrkAdapter() const = 0;
virtual void startAdapter(const DebuggerStartParametersPtr &sp) = 0; virtual void startAdapter() = 0;
virtual void prepareInferior() = 0; virtual void prepareInferior() = 0;
virtual void startInferior() = 0; virtual void startInferior() = 0;
virtual void interruptInferior() = 0; virtual void interruptInferior() = 0;
virtual void shutdown() = 0; virtual void shutdown() = 0;
virtual const DebuggerStartParameters &startParameters() const
{ return m_engine->startParameters(); }
signals: signals:
void adapterStarted(); void adapterStarted();
void adapterStartFailed(const QString &msg); void adapterStartFailed(const QString &msg);

View File

@@ -1521,6 +1521,8 @@ void GdbEngine::startDebugger(const DebuggerStartParametersPtr &sp)
// initializeVariables()); // initializeVariables());
//QTC_ASSERT(m_gdbAdapter == 0, delete m_gdbAdapter; m_gdbAdapter = 0); //QTC_ASSERT(m_gdbAdapter == 0, delete m_gdbAdapter; m_gdbAdapter = 0);
m_startParameters = sp;
if (m_gdbAdapter) if (m_gdbAdapter)
disconnectAdapter(); disconnectAdapter();
@@ -1532,9 +1534,7 @@ void GdbEngine::startDebugger(const DebuggerStartParametersPtr &sp)
initializeVariables(); initializeVariables();
connectAdapter(); connectAdapter();
m_startParameters = sp; m_gdbAdapter->startAdapter();
m_gdbAdapter->startAdapter(sp);
/* /*
QStringList gdbArgs; QStringList gdbArgs;

View File

@@ -95,8 +95,6 @@ private:
friend class TrkGdbAdapter; friend class TrkGdbAdapter;
friend class RemoteGdbAdapter; friend class RemoteGdbAdapter;
const DebuggerStartParameters &startParameters() const
{ return *m_startParameters; }
// //
// IDebuggerEngine implementation // IDebuggerEngine implementation
// //
@@ -452,6 +450,8 @@ public:
void showMessageBox(int icon, const QString &title, const QString &text); void showMessageBox(int icon, const QString &title, const QString &text);
void debugMessage(const QString &msg); void debugMessage(const QString &msg);
void addOptionPages(QList<Core::IOptionsPage*> *opts) const; void addOptionPages(QList<Core::IOptionsPage*> *opts) const;
const DebuggerStartParameters &startParameters() const
{ return *m_startParameters; }
OutputCollector m_outputCollector; OutputCollector m_outputCollector;
}; };

View File

@@ -83,24 +83,23 @@ PlainGdbAdapter::PlainGdbAdapter(GdbEngine *engine, QObject *parent)
// m_manager, SLOT(exitDebugger())); // m_manager, SLOT(exitDebugger()));
} }
void PlainGdbAdapter::startAdapter(const DebuggerStartParametersPtr &sp) void PlainGdbAdapter::startAdapter()
{ {
QTC_ASSERT(state() == AdapterNotRunning, qDebug() << state()); QTC_ASSERT(state() == AdapterNotRunning, qDebug() << state());
setState(AdapterStarting); setState(AdapterStarting);
debugMessage(_("TRYING TO START ADAPTER")); debugMessage(_("TRYING TO START ADAPTER"));
m_startParameters = sp;
QStringList gdbArgs; QStringList gdbArgs;
gdbArgs.prepend(_("mi")); gdbArgs.prepend(_("mi"));
gdbArgs.prepend(_("-i")); gdbArgs.prepend(_("-i"));
if (m_startParameters->useTerminal) { if (startParameters().useTerminal) {
m_stubProc.stop(); // We leave the console open, so recycle it now. m_stubProc.stop(); // We leave the console open, so recycle it now.
m_stubProc.setWorkingDirectory(m_startParameters->workingDir); m_stubProc.setWorkingDirectory(startParameters().workingDir);
m_stubProc.setEnvironment(m_startParameters->environment); m_stubProc.setEnvironment(startParameters().environment);
if (!m_stubProc.start(m_startParameters->executable, if (!m_stubProc.start(startParameters().executable,
m_startParameters->processArgs)) { startParameters().processArgs)) {
// Error message for user is delivered via a signal. // Error message for user is delivered via a signal.
emitAdapterStartFailed(QString()); emitAdapterStartFailed(QString());
return; return;
@@ -113,10 +112,10 @@ void PlainGdbAdapter::startAdapter(const DebuggerStartParametersPtr &sp)
} }
gdbArgs.prepend(_("--tty=") + m_engine->m_outputCollector.serverName()); gdbArgs.prepend(_("--tty=") + m_engine->m_outputCollector.serverName());
if (!m_startParameters->workingDir.isEmpty()) if (!startParameters().workingDir.isEmpty())
setWorkingDirectory(m_startParameters->workingDir); setWorkingDirectory(startParameters().workingDir);
if (!m_startParameters->environment.isEmpty()) if (!startParameters().environment.isEmpty())
setEnvironment(m_startParameters->environment); setEnvironment(startParameters().environment);
} }
QString location = theDebuggerStringSetting(GdbLocation); QString location = theDebuggerStringSetting(GdbLocation);
@@ -135,9 +134,9 @@ void PlainGdbAdapter::prepareInferior()
{ {
QTC_ASSERT(state() == AdapterStarted, qDebug() << state()); QTC_ASSERT(state() == AdapterStarted, qDebug() << state());
setState(InferiorPreparing); setState(InferiorPreparing);
if (!m_startParameters->processArgs.isEmpty()) if (!startParameters().processArgs.isEmpty())
m_engine->postCommand(_("-exec-arguments ") m_engine->postCommand(_("-exec-arguments ")
+ m_startParameters->processArgs.join(_(" "))); + startParameters().processArgs.join(_(" ")));
QFileInfo fi(m_engine->startParameters().executable); QFileInfo fi(m_engine->startParameters().executable);
m_engine->postCommand(_("-file-exec-and-symbols \"%1\"").arg(fi.absoluteFilePath()), m_engine->postCommand(_("-file-exec-and-symbols \"%1\"").arg(fi.absoluteFilePath()),
CB(handleFileExecAndSymbols)); CB(handleFileExecAndSymbols));

View File

@@ -61,7 +61,7 @@ public:
void setEnvironment(const QStringList &env) { m_gdbProc.setEnvironment(env); } void setEnvironment(const QStringList &env) { m_gdbProc.setEnvironment(env); }
bool isTrkAdapter() const { return false; } bool isTrkAdapter() const { return false; }
void startAdapter(const DebuggerStartParametersPtr &sp); void startAdapter();
void prepareInferior(); void prepareInferior();
void startInferior(); void startInferior();
void interruptInferior(); void interruptInferior();
@@ -83,7 +83,6 @@ private:
Q_SLOT void stubError(const QString &msg); Q_SLOT void stubError(const QString &msg);
QProcess m_gdbProc; QProcess m_gdbProc;
DebuggerStartParametersPtr m_startParameters;
Core::Utils::ConsoleProcess m_stubProc; Core::Utils::ConsoleProcess m_stubProc;
}; };

View File

@@ -1344,12 +1344,11 @@ void TrkGdbAdapter::handleGdbStateChanged(QProcess::ProcessState newState)
logMessage(_("GDB: Process State %1").arg(newState)); logMessage(_("GDB: Process State %1").arg(newState));
} }
void TrkGdbAdapter::startAdapter(const DebuggerStartParametersPtr &sp) void TrkGdbAdapter::startAdapter()
{ {
QTC_ASSERT(state() == AdapterNotRunning, qDebug() << state()); QTC_ASSERT(state() == AdapterNotRunning, qDebug() << state());
setState(AdapterStarting); setState(AdapterStarting);
debugMessage(_("TRYING TO START ADAPTER")); debugMessage(_("TRYING TO START ADAPTER"));
m_startParameters = sp;
logMessage(QLatin1String("### Starting TrkGdbAdapter")); logMessage(QLatin1String("### Starting TrkGdbAdapter"));
if (m_options->mode == TrkOptions::BlueTooth) { if (m_options->mode == TrkOptions::BlueTooth) {
const QString device = effectiveTrkDevice(); const QString device = effectiveTrkDevice();

View File

@@ -32,6 +32,7 @@
#include "trkutils.h" #include "trkutils.h"
#include "trkdevice.h" #include "trkdevice.h"
#include "trkoptions.h"
#include "abstractgdbadapter.h" #include "abstractgdbadapter.h"
#include <QtCore/QHash> #include <QtCore/QHash>
@@ -48,8 +49,6 @@
namespace Debugger { namespace Debugger {
namespace Internal { namespace Internal {
struct TrkOptions;
struct GdbResult struct GdbResult
{ {
QByteArray data; QByteArray data;
@@ -101,7 +100,6 @@ private:
QProcess m_gdbProc; QProcess m_gdbProc;
QProcess m_rfcommProc; QProcess m_rfcommProc;
bool m_running; bool m_running;
DebuggerStartParametersPtr m_startParameters;
void debugMessage(const QString &msg) { m_engine->debugMessage(msg); } void debugMessage(const QString &msg) { m_engine->debugMessage(msg); }
public: public:
@@ -117,7 +115,7 @@ public:
void setEnvironment(const QStringList &env); void setEnvironment(const QStringList &env);
bool isTrkAdapter() const { return true; } bool isTrkAdapter() const { return true; }
void startAdapter(const DebuggerStartParametersPtr &sp); void startAdapter();
void prepareInferior(); void prepareInferior();
void startInferior(); void startInferior();
void interruptInferior(); void interruptInferior();