forked from qt-creator/qt-creator
debugger: let the gdb adapters access the engines start parameter instead of keeping a copy
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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));
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user