forked from qt-creator/qt-creator
fix shutdown paths
this includes: - move the gdb ownership back to the engine (thus strip down the adaptors as far as possible) - make gdb startup synchronous - make adapter shutdown synchronous - fix the state transitions relating to shutdown
This commit is contained in:
@@ -42,7 +42,7 @@ namespace Internal {
|
||||
// debugging and TrkGdbAdapter used for on-device debugging.
|
||||
// In the PlainGdbAdapter case it's just a wrapper around a QProcess running
|
||||
// gdb, in the TrkGdbAdapter case it's the interface to the gdb process in
|
||||
// the whole rfomm/gdb/gdbserver combo.
|
||||
// the whole rfcomm/gdb/gdbserver combo.
|
||||
class AbstractGdbAdapter : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
@@ -51,34 +51,39 @@ public:
|
||||
AbstractGdbAdapter(GdbEngine *engine, QObject *parent = 0);
|
||||
virtual ~AbstractGdbAdapter();
|
||||
|
||||
QByteArray readAllStandardOutput();
|
||||
QByteArray readAllStandardError();
|
||||
virtual void write(const QByteArray &data);
|
||||
virtual bool isTrkAdapter() const; // isUtterlyBrokenAdapter
|
||||
|
||||
virtual void startAdapter() = 0;
|
||||
virtual void startInferior() = 0;
|
||||
virtual void interruptInferior() = 0;
|
||||
virtual void shutdown() = 0;
|
||||
virtual void shutdown();
|
||||
virtual const char *inferiorShutdownCommand() const;
|
||||
|
||||
virtual bool dumpersAvailable() const = 0;
|
||||
|
||||
static QString msgGdbStopFailed(const QString &why);
|
||||
static QString msgInferiorStopFailed(const QString &why);
|
||||
static QString msgAttachedToStoppedInferior();
|
||||
static QString msgInferiorStarted();
|
||||
static QString msgInferiorRunning();
|
||||
static QString msgConnectRemoteServerFailed(const QString &why);
|
||||
|
||||
signals:
|
||||
void adapterStarted();
|
||||
|
||||
// Something went wrong with the adapter *before* adapterStarted() was emitted.
|
||||
// Make sure to clean up everything before emitting this signal.
|
||||
void adapterStartFailed(const QString &msg, const QString &settingsIdHint);
|
||||
void adapterShutDown();
|
||||
void adapterShutdownFailed(const QString &msg);
|
||||
|
||||
// Something went wrong with the adapter *after* adapterStarted() was emitted.
|
||||
// Make sure to clean up everything before emitting this signal.
|
||||
void adapterCrashed(const QString &msg);
|
||||
|
||||
// The adapter is still running just fine, but it failed to acquire a debuggee.
|
||||
void inferiorStartFailed(const QString &msg);
|
||||
void inferiorShutDown();
|
||||
void inferiorShutdownFailed(const QString &msg);
|
||||
|
||||
void readyReadStandardOutput();
|
||||
void readyReadStandardError();
|
||||
|
||||
protected:
|
||||
void commonInit();
|
||||
DebuggerState state() const
|
||||
{ return m_engine->state(); }
|
||||
void setState(DebuggerState state)
|
||||
@@ -90,16 +95,7 @@ protected:
|
||||
void showStatusMessage(const QString &msg) const
|
||||
{ m_engine->showStatusMessage(msg); }
|
||||
|
||||
static QString msgGdbStopFailed(const QString &why);
|
||||
static QString msgInferiorStopFailed(const QString &why);
|
||||
static QString msgAttachedToStoppedInferior();
|
||||
static QString msgInferiorStarted();
|
||||
static QString msgInferiorRunning();
|
||||
static QString msgConnectRemoteServerFailed(const QString &why);
|
||||
|
||||
GdbEngine * const m_engine;
|
||||
|
||||
QProcess m_gdbProc;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
Reference in New Issue
Block a user