forked from qt-creator/qt-creator
debugger: refactoring of AbstractGdbAdapter
remove shutdownInferior(), rename shutdownAdapter() into shutdown()
This commit is contained in:
@@ -85,9 +85,8 @@ public:
|
|||||||
virtual void startAdapter(const DebuggerStartParametersPtr &sp) = 0;
|
virtual void startAdapter(const DebuggerStartParametersPtr &sp) = 0;
|
||||||
virtual void prepareInferior() = 0;
|
virtual void prepareInferior() = 0;
|
||||||
virtual void startInferior() = 0;
|
virtual void startInferior() = 0;
|
||||||
virtual void shutdownInferior() = 0;
|
|
||||||
virtual void shutdownAdapter() = 0;
|
|
||||||
virtual void interruptInferior() = 0;
|
virtual void interruptInferior() = 0;
|
||||||
|
virtual void shutdown() = 0;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void adapterStarted();
|
void adapterStarted();
|
||||||
|
|||||||
@@ -228,13 +228,6 @@ void GdbEngine::initializeConnections()
|
|||||||
connect(m_gdbAdapter, SIGNAL(adapterCrashed()),
|
connect(m_gdbAdapter, SIGNAL(adapterCrashed()),
|
||||||
m_manager, SLOT(exitDebugger()));
|
m_manager, SLOT(exitDebugger()));
|
||||||
|
|
||||||
connect(&m_uploadProc, SIGNAL(error(QProcess::ProcessError)),
|
|
||||||
this, SLOT(uploadProcError(QProcess::ProcessError)));
|
|
||||||
connect(&m_uploadProc, SIGNAL(readyReadStandardOutput()),
|
|
||||||
this, SLOT(readUploadStandardOutput()));
|
|
||||||
connect(&m_uploadProc, SIGNAL(readyReadStandardError()),
|
|
||||||
this, SLOT(readUploadStandardError()));
|
|
||||||
|
|
||||||
// Output
|
// Output
|
||||||
connect(&m_outputCollector, SIGNAL(byteDelivery(QByteArray)),
|
connect(&m_outputCollector, SIGNAL(byteDelivery(QByteArray)),
|
||||||
this, SLOT(readDebugeeOutput(QByteArray)));
|
this, SLOT(readDebugeeOutput(QByteArray)));
|
||||||
@@ -290,8 +283,7 @@ void GdbEngine::initializeVariables()
|
|||||||
|
|
||||||
// FIXME: unhandled:
|
// FIXME: unhandled:
|
||||||
//m_outputCodecState = QTextCodec::ConverterState();
|
//m_outputCodecState = QTextCodec::ConverterState();
|
||||||
//QProcess m_gdbAdapter;
|
//m_gdbAdapter;
|
||||||
//QProcess m_uploadProc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GdbEngine::gdbProcError(QProcess::ProcessError error)
|
void GdbEngine::gdbProcError(QProcess::ProcessError error)
|
||||||
@@ -338,55 +330,6 @@ void GdbEngine::gdbProcError(QProcess::ProcessError error)
|
|||||||
m_manager->exitDebugger();
|
m_manager->exitDebugger();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GdbEngine::uploadProcError(QProcess::ProcessError error)
|
|
||||||
{
|
|
||||||
QString msg;
|
|
||||||
switch (error) {
|
|
||||||
case QProcess::FailedToStart:
|
|
||||||
msg = tr("The upload process failed to start. Either the "
|
|
||||||
"invoked script '%1' is missing, or you may have insufficient "
|
|
||||||
"permissions to invoke the program.")
|
|
||||||
.arg(theDebuggerStringSetting(GdbLocation));
|
|
||||||
break;
|
|
||||||
case QProcess::Crashed:
|
|
||||||
msg = tr("The upload process crashed some time after starting "
|
|
||||||
"successfully.");
|
|
||||||
break;
|
|
||||||
case QProcess::Timedout:
|
|
||||||
msg = tr("The last waitFor...() function timed out. "
|
|
||||||
"The state of QProcess is unchanged, and you can try calling "
|
|
||||||
"waitFor...() again.");
|
|
||||||
break;
|
|
||||||
case QProcess::WriteError:
|
|
||||||
msg = tr("An error occurred when attempting to write "
|
|
||||||
"to the upload process. For example, the process may not be running, "
|
|
||||||
"or it may have closed its input channel.");
|
|
||||||
break;
|
|
||||||
case QProcess::ReadError:
|
|
||||||
msg = tr("An error occurred when attempting to read from "
|
|
||||||
"the upload process. For example, the process may not be running.");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
msg = tr("An unknown error in the upload process occurred. "
|
|
||||||
"This is the default return value of error().");
|
|
||||||
}
|
|
||||||
|
|
||||||
showStatusMessage(msg);
|
|
||||||
QMessageBox::critical(mainWindow(), tr("Error"), msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GdbEngine::readUploadStandardOutput()
|
|
||||||
{
|
|
||||||
QByteArray ba = m_uploadProc.readAllStandardOutput();
|
|
||||||
gdbOutputAvailable(LogOutput, QString::fromLocal8Bit(ba, ba.length()));
|
|
||||||
}
|
|
||||||
|
|
||||||
void GdbEngine::readUploadStandardError()
|
|
||||||
{
|
|
||||||
QByteArray ba = m_uploadProc.readAllStandardError();
|
|
||||||
gdbOutputAvailable(LogError, QString::fromLocal8Bit(ba, ba.length()));
|
|
||||||
}
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
static void dump(const char *first, const char *middle, const QString & to)
|
static void dump(const char *first, const char *middle, const QString & to)
|
||||||
{
|
{
|
||||||
@@ -713,7 +656,7 @@ void GdbEngine::postCommand(const QString &command, GdbCommandFlags flags,
|
|||||||
{
|
{
|
||||||
GdbCommand cmd;
|
GdbCommand cmd;
|
||||||
cmd.command = command;
|
cmd.command = command;
|
||||||
//cmd.flags = flags;
|
cmd.flags = flags;
|
||||||
cmd.adapterCallback = callback;
|
cmd.adapterCallback = callback;
|
||||||
cmd.callbackName = callbackName;
|
cmd.callbackName = callbackName;
|
||||||
cmd.cookie = cookie;
|
cmd.cookie = cookie;
|
||||||
@@ -1508,7 +1451,7 @@ void GdbEngine::shutdown()
|
|||||||
{
|
{
|
||||||
m_outputCollector.shutdown();
|
m_outputCollector.shutdown();
|
||||||
initializeVariables();
|
initializeVariables();
|
||||||
m_gdbAdapter->shutdownAdapter();
|
m_gdbAdapter->shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GdbEngine::detachDebugger()
|
void GdbEngine::detachDebugger()
|
||||||
@@ -1522,7 +1465,7 @@ void GdbEngine::exitDebugger()
|
|||||||
{
|
{
|
||||||
m_outputCollector.shutdown();
|
m_outputCollector.shutdown();
|
||||||
initializeVariables();
|
initializeVariables();
|
||||||
m_gdbAdapter->shutdownAdapter();
|
m_gdbAdapter->shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GdbEngine::handleExitHelper(const GdbResultRecord &, const QVariant &)
|
void GdbEngine::handleExitHelper(const GdbResultRecord &, const QVariant &)
|
||||||
|
|||||||
@@ -229,10 +229,7 @@ private slots:
|
|||||||
void gdbProcError(QProcess::ProcessError error);
|
void gdbProcError(QProcess::ProcessError error);
|
||||||
void readGdbStandardOutput();
|
void readGdbStandardOutput();
|
||||||
void readGdbStandardError();
|
void readGdbStandardError();
|
||||||
void readUploadStandardOutput();
|
|
||||||
void readUploadStandardError();
|
|
||||||
void readDebugeeOutput(const QByteArray &data);
|
void readDebugeeOutput(const QByteArray &data);
|
||||||
void uploadProcError(QProcess::ProcessError error);
|
|
||||||
void emitStartFailed();
|
void emitStartFailed();
|
||||||
|
|
||||||
void handleAdapterStarted();
|
void handleAdapterStarted();
|
||||||
@@ -297,7 +294,6 @@ private:
|
|||||||
QByteArray m_inbuffer;
|
QByteArray m_inbuffer;
|
||||||
|
|
||||||
AbstractGdbAdapter *m_gdbAdapter;
|
AbstractGdbAdapter *m_gdbAdapter;
|
||||||
QProcess m_uploadProc;
|
|
||||||
|
|
||||||
QHash<int, GdbCommand> m_cookieForToken;
|
QHash<int, GdbCommand> m_cookieForToken;
|
||||||
QHash<int, QByteArray> m_customOutputForToken;
|
QHash<int, QByteArray> m_customOutputForToken;
|
||||||
|
|||||||
@@ -158,11 +158,12 @@ void PlainGdbAdapter::handleFileExecAndSymbols(const GdbResultRecord &response,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlainGdbAdapter::startInferior()
|
void PlainGdbAdapter::handleInfoTarget(const GdbResultRecord &response, const QVariant &)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(state() == InferiorPrepared, qDebug() << state());
|
QTC_ASSERT(state() == AdapterNotRunning, qDebug() << state());
|
||||||
setState(InferiorStarting);
|
#if defined(Q_OS_MAC)
|
||||||
m_engine->postCommand(_("-exec-run"), CB(handleExecRun));
|
Q_UNUSED(response)
|
||||||
|
#else
|
||||||
/*
|
/*
|
||||||
#ifdef Q_OS_MAC
|
#ifdef Q_OS_MAC
|
||||||
m_engine->postCommand(_("sharedlibrary apply-load-rules all"));
|
m_engine->postCommand(_("sharedlibrary apply-load-rules all"));
|
||||||
@@ -177,14 +178,6 @@ void PlainGdbAdapter::startInferior()
|
|||||||
m_engine->postCommand(_("info target"), CB(handleInfoTarget));
|
m_engine->postCommand(_("info target"), CB(handleInfoTarget));
|
||||||
#endif
|
#endif
|
||||||
*/
|
*/
|
||||||
}
|
|
||||||
|
|
||||||
void PlainGdbAdapter::handleInfoTarget(const GdbResultRecord &response, const QVariant &)
|
|
||||||
{
|
|
||||||
QTC_ASSERT(state() == AdapterNotRunning, qDebug() << state());
|
|
||||||
#if defined(Q_OS_MAC)
|
|
||||||
Q_UNUSED(response)
|
|
||||||
#else
|
|
||||||
if (response.resultClass == GdbResultDone) {
|
if (response.resultClass == GdbResultDone) {
|
||||||
// [some leading stdout here]
|
// [some leading stdout here]
|
||||||
// >&" Entry point: 0x80831f0 0x08048134 - 0x08048147 is .interp\n"
|
// >&" Entry point: 0x80831f0 0x08048134 - 0x08048147 is .interp\n"
|
||||||
@@ -241,7 +234,7 @@ void PlainGdbAdapter::interruptInferior()
|
|||||||
debugMessage(_("CANNOT INTERRUPT %1").arg(attachedPID));
|
debugMessage(_("CANNOT INTERRUPT %1").arg(attachedPID));
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlainGdbAdapter::shutdownAdapter()
|
void PlainGdbAdapter::shutdown()
|
||||||
{
|
{
|
||||||
if (state() == InferiorStarted) {
|
if (state() == InferiorStarted) {
|
||||||
setState(InferiorShuttingDown);
|
setState(InferiorShuttingDown);
|
||||||
@@ -281,7 +274,7 @@ void PlainGdbAdapter::handleKill(const GdbResultRecord &response, const QVariant
|
|||||||
if (response.resultClass == GdbResultDone) {
|
if (response.resultClass == GdbResultDone) {
|
||||||
setState(InferiorShutDown);
|
setState(InferiorShutDown);
|
||||||
emit inferiorShutDown();
|
emit inferiorShutDown();
|
||||||
shutdownAdapter(); // re-iterate...
|
shutdown(); // re-iterate...
|
||||||
} else if (response.resultClass == GdbResultError) {
|
} else if (response.resultClass == GdbResultError) {
|
||||||
QString msg = tr("Inferior process could not be stopped:\n") +
|
QString msg = tr("Inferior process could not be stopped:\n") +
|
||||||
__(response.data.findChild("msg").data());
|
__(response.data.findChild("msg").data());
|
||||||
@@ -308,11 +301,6 @@ void PlainGdbAdapter::handleGdbFinished(int, QProcess::ExitStatus)
|
|||||||
emit adapterShutDown();
|
emit adapterShutDown();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlainGdbAdapter::shutdownInferior()
|
|
||||||
{
|
|
||||||
m_engine->postCommand(_("kill"));
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlainGdbAdapter::stubStarted()
|
void PlainGdbAdapter::stubStarted()
|
||||||
{
|
{
|
||||||
const qint64 attachedPID = m_stubProc.applicationPID();
|
const qint64 attachedPID = m_stubProc.applicationPID();
|
||||||
|
|||||||
@@ -63,13 +63,12 @@ public:
|
|||||||
void setWorkingDirectory(const QString &dir) { m_gdbProc.setWorkingDirectory(dir); }
|
void setWorkingDirectory(const QString &dir) { m_gdbProc.setWorkingDirectory(dir); }
|
||||||
void setEnvironment(const QStringList &env) { m_gdbProc.setEnvironment(env); }
|
void setEnvironment(const QStringList &env) { m_gdbProc.setEnvironment(env); }
|
||||||
bool isAdapter() const { return false; }
|
bool isAdapter() const { return false; }
|
||||||
void interruptInferior();
|
|
||||||
|
|
||||||
void startAdapter(const DebuggerStartParametersPtr &sp);
|
void startAdapter(const DebuggerStartParametersPtr &sp);
|
||||||
void prepareInferior();
|
void prepareInferior();
|
||||||
void startInferior();
|
void startInferior();
|
||||||
void shutdownInferior();
|
void interruptInferior();
|
||||||
void shutdownAdapter();
|
void shutdown();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void handleFileExecAndSymbols(const GdbResultRecord &, const QVariant &);
|
void handleFileExecAndSymbols(const GdbResultRecord &, const QVariant &);
|
||||||
|
|||||||
@@ -68,6 +68,13 @@ RemoteGdbAdapter::RemoteGdbAdapter(GdbEngine *engine, QObject *parent)
|
|||||||
this, SLOT(handleGdbStarted()));
|
this, SLOT(handleGdbStarted()));
|
||||||
connect(&m_gdbProc, SIGNAL(finished(int, QProcess::ExitStatus)),
|
connect(&m_gdbProc, SIGNAL(finished(int, QProcess::ExitStatus)),
|
||||||
this, SLOT(handleGdbFinished(int, QProcess::ExitStatus)));
|
this, SLOT(handleGdbFinished(int, QProcess::ExitStatus)));
|
||||||
|
|
||||||
|
connect(&m_uploadProc, SIGNAL(error(QProcess::ProcessError)),
|
||||||
|
this, SLOT(uploadProcError(QProcess::ProcessError)));
|
||||||
|
connect(&m_uploadProc, SIGNAL(readyReadStandardOutput()),
|
||||||
|
this, SLOT(readUploadStandardOutput()));
|
||||||
|
connect(&m_uploadProc, SIGNAL(readyReadStandardError()),
|
||||||
|
this, SLOT(readUploadStandardError()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoteGdbAdapter::startAdapter(const DebuggerStartParametersPtr &sp)
|
void RemoteGdbAdapter::startAdapter(const DebuggerStartParametersPtr &sp)
|
||||||
@@ -105,6 +112,55 @@ void RemoteGdbAdapter::handleGdbStarted()
|
|||||||
emit adapterStarted();
|
emit adapterStarted();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RemoteGdbAdapter::uploadProcError(QProcess::ProcessError error)
|
||||||
|
{
|
||||||
|
QString msg;
|
||||||
|
switch (error) {
|
||||||
|
case QProcess::FailedToStart:
|
||||||
|
msg = tr("The upload process failed to start. Either the "
|
||||||
|
"invoked script '%1' is missing, or you may have insufficient "
|
||||||
|
"permissions to invoke the program.")
|
||||||
|
.arg(theDebuggerStringSetting(GdbLocation));
|
||||||
|
break;
|
||||||
|
case QProcess::Crashed:
|
||||||
|
msg = tr("The upload process crashed some time after starting "
|
||||||
|
"successfully.");
|
||||||
|
break;
|
||||||
|
case QProcess::Timedout:
|
||||||
|
msg = tr("The last waitFor...() function timed out. "
|
||||||
|
"The state of QProcess is unchanged, and you can try calling "
|
||||||
|
"waitFor...() again.");
|
||||||
|
break;
|
||||||
|
case QProcess::WriteError:
|
||||||
|
msg = tr("An error occurred when attempting to write "
|
||||||
|
"to the upload process. For example, the process may not be running, "
|
||||||
|
"or it may have closed its input channel.");
|
||||||
|
break;
|
||||||
|
case QProcess::ReadError:
|
||||||
|
msg = tr("An error occurred when attempting to read from "
|
||||||
|
"the upload process. For example, the process may not be running.");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
msg = tr("An unknown error in the upload process occurred. "
|
||||||
|
"This is the default return value of error().");
|
||||||
|
}
|
||||||
|
|
||||||
|
m_engine->showStatusMessage(msg);
|
||||||
|
QMessageBox::critical(m_engine->mainWindow(), tr("Error"), msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RemoteGdbAdapter::readUploadStandardOutput()
|
||||||
|
{
|
||||||
|
QByteArray ba = m_uploadProc.readAllStandardOutput();
|
||||||
|
m_engine->gdbOutputAvailable(LogOutput, QString::fromLocal8Bit(ba, ba.length()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void RemoteGdbAdapter::readUploadStandardError()
|
||||||
|
{
|
||||||
|
QByteArray ba = m_uploadProc.readAllStandardError();
|
||||||
|
m_engine->gdbOutputAvailable(LogError, QString::fromLocal8Bit(ba, ba.length()));
|
||||||
|
}
|
||||||
|
|
||||||
void RemoteGdbAdapter::prepareInferior()
|
void RemoteGdbAdapter::prepareInferior()
|
||||||
{
|
{
|
||||||
QTC_ASSERT(state() == AdapterStarted, qDebug() << state());
|
QTC_ASSERT(state() == AdapterStarted, qDebug() << state());
|
||||||
@@ -173,7 +229,7 @@ void RemoteGdbAdapter::interruptInferior()
|
|||||||
debugMessage(_("CANNOT INTERRUPT %1").arg(attachedPID));
|
debugMessage(_("CANNOT INTERRUPT %1").arg(attachedPID));
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoteGdbAdapter::shutdownAdapter()
|
void RemoteGdbAdapter::shutdown()
|
||||||
{
|
{
|
||||||
if (state() == InferiorStarted) {
|
if (state() == InferiorStarted) {
|
||||||
setState(InferiorShuttingDown);
|
setState(InferiorShuttingDown);
|
||||||
@@ -187,24 +243,7 @@ void RemoteGdbAdapter::shutdownAdapter()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
// FIXME: handle other states, too.
|
||||||
if (state() == InferiorShutdownFailed) {
|
|
||||||
m_gdbProc.terminate();
|
|
||||||
// 20s can easily happen when loading webkit debug information
|
|
||||||
m_gdbProc.waitForFinished(20000);
|
|
||||||
setState(AdapterShuttingDown);
|
|
||||||
debugMessage(_("FORCING TERMINATION: %1")
|
|
||||||
.arg(state()));
|
|
||||||
if (state() != QProcess::NotRunning) {
|
|
||||||
debugMessage(_("PROBLEM STOPPING DEBUGGER: STATE %1")
|
|
||||||
.arg(state()));
|
|
||||||
m_gdbProc.kill();
|
|
||||||
}
|
|
||||||
m_engine->postCommand(_("-gdb-exit"), CB(handleExit));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
||||||
QTC_ASSERT(state() == AdapterNotRunning, qDebug() << state());
|
QTC_ASSERT(state() == AdapterNotRunning, qDebug() << state());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -213,7 +252,7 @@ void RemoteGdbAdapter::handleKill(const GdbResultRecord &response, const QVarian
|
|||||||
if (response.resultClass == GdbResultDone) {
|
if (response.resultClass == GdbResultDone) {
|
||||||
setState(InferiorShutDown);
|
setState(InferiorShutDown);
|
||||||
emit inferiorShutDown();
|
emit inferiorShutDown();
|
||||||
shutdownAdapter(); // re-iterate...
|
shutdown(); // re-iterate...
|
||||||
} else if (response.resultClass == GdbResultError) {
|
} else if (response.resultClass == GdbResultError) {
|
||||||
QString msg = tr("Inferior process could not be stopped:\n") +
|
QString msg = tr("Inferior process could not be stopped:\n") +
|
||||||
__(response.data.findChild("msg").data());
|
__(response.data.findChild("msg").data());
|
||||||
@@ -240,10 +279,5 @@ void RemoteGdbAdapter::handleGdbFinished(int, QProcess::ExitStatus)
|
|||||||
emit adapterShutDown();
|
emit adapterShutDown();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoteGdbAdapter::shutdownInferior()
|
|
||||||
{
|
|
||||||
m_engine->postCommand(_("kill"));
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace Debugger
|
} // namespace Debugger
|
||||||
|
|||||||
@@ -59,13 +59,16 @@ public:
|
|||||||
void setWorkingDirectory(const QString &dir) { m_gdbProc.setWorkingDirectory(dir); }
|
void setWorkingDirectory(const QString &dir) { m_gdbProc.setWorkingDirectory(dir); }
|
||||||
void setEnvironment(const QStringList &env) { m_gdbProc.setEnvironment(env); }
|
void setEnvironment(const QStringList &env) { m_gdbProc.setEnvironment(env); }
|
||||||
bool isAdapter() const { return false; }
|
bool isAdapter() const { return false; }
|
||||||
void interruptInferior();
|
|
||||||
|
|
||||||
void startAdapter(const DebuggerStartParametersPtr &sp);
|
void startAdapter(const DebuggerStartParametersPtr &sp);
|
||||||
void prepareInferior();
|
void prepareInferior();
|
||||||
void startInferior();
|
void startInferior();
|
||||||
void shutdownInferior();
|
void interruptInferior();
|
||||||
void shutdownAdapter();
|
void shutdown();
|
||||||
|
|
||||||
|
void readUploadStandardOutput();
|
||||||
|
void readUploadStandardError();
|
||||||
|
void uploadProcError(QProcess::ProcessError error);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void handleFileExecAndSymbols(const GdbResultRecord &, const QVariant &);
|
void handleFileExecAndSymbols(const GdbResultRecord &, const QVariant &);
|
||||||
@@ -79,6 +82,7 @@ private:
|
|||||||
|
|
||||||
QProcess m_gdbProc;
|
QProcess m_gdbProc;
|
||||||
DebuggerStartParametersPtr m_startParameters;
|
DebuggerStartParametersPtr m_startParameters;
|
||||||
|
QProcess m_uploadProc;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|||||||
@@ -1483,7 +1483,7 @@ void TrkGdbAdapter::sendGdbMessage(const QString &msg, GdbCallback callback,
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// GdbProcessBase
|
// Rfcomm process handling
|
||||||
//
|
//
|
||||||
|
|
||||||
void TrkGdbAdapter::handleRfcommReadyReadStandardError()
|
void TrkGdbAdapter::handleRfcommReadyReadStandardError()
|
||||||
@@ -1523,6 +1523,7 @@ void TrkGdbAdapter::handleRfcommStateChanged(QProcess::ProcessState newState)
|
|||||||
// AbstractGdbAdapter interface implementation
|
// AbstractGdbAdapter interface implementation
|
||||||
//
|
//
|
||||||
|
|
||||||
|
/*
|
||||||
void TrkGdbAdapter::kill()
|
void TrkGdbAdapter::kill()
|
||||||
{
|
{
|
||||||
if (m_options->mode == TrkOptions::BlueTooth
|
if (m_options->mode == TrkOptions::BlueTooth
|
||||||
@@ -1537,7 +1538,6 @@ void TrkGdbAdapter::terminate()
|
|||||||
m_gdbProc.terminate();
|
m_gdbProc.terminate();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
bool TrkGdbAdapter::waitForFinished(int msecs)
|
bool TrkGdbAdapter::waitForFinished(int msecs)
|
||||||
{
|
{
|
||||||
QByteArray ba;
|
QByteArray ba;
|
||||||
@@ -1582,12 +1582,7 @@ void TrkGdbAdapter::setEnvironment(const QStringList &env)
|
|||||||
m_gdbProc.setEnvironment(env);
|
m_gdbProc.setEnvironment(env);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrkGdbAdapter::shutdownInferior()
|
void TrkGdbAdapter::shutdown()
|
||||||
{
|
|
||||||
m_engine->postCommand(_("kill"), CB(handleKill));
|
|
||||||
}
|
|
||||||
|
|
||||||
void TrkGdbAdapter::shutdownAdapter()
|
|
||||||
{
|
{
|
||||||
if (state() == InferiorStarted) {
|
if (state() == InferiorStarted) {
|
||||||
setState(InferiorShuttingDown);
|
setState(InferiorShuttingDown);
|
||||||
@@ -1610,7 +1605,7 @@ void TrkGdbAdapter::handleKill(const GdbResultRecord &response, const QVariant &
|
|||||||
if (response.resultClass == GdbResultDone) {
|
if (response.resultClass == GdbResultDone) {
|
||||||
setState(InferiorShutDown);
|
setState(InferiorShutDown);
|
||||||
emit inferiorShutDown();
|
emit inferiorShutDown();
|
||||||
shutdownAdapter(); // re-iterate...
|
shutdown(); // re-iterate...
|
||||||
} else if (response.resultClass == GdbResultError) {
|
} else if (response.resultClass == GdbResultError) {
|
||||||
QString msg = tr("Inferior process could not be stopped:\n") +
|
QString msg = tr("Inferior process could not be stopped:\n") +
|
||||||
__(response.data.findChild("msg").data());
|
__(response.data.findChild("msg").data());
|
||||||
|
|||||||
@@ -109,8 +109,6 @@ public:
|
|||||||
//
|
//
|
||||||
void start(const QString &program, const QStringList &args,
|
void start(const QString &program, const QStringList &args,
|
||||||
QIODevice::OpenMode mode = QIODevice::ReadWrite);
|
QIODevice::OpenMode mode = QIODevice::ReadWrite);
|
||||||
void kill();
|
|
||||||
void terminate();
|
|
||||||
QString errorString() const;
|
QString errorString() const;
|
||||||
QByteArray readAllStandardError();
|
QByteArray readAllStandardError();
|
||||||
QByteArray readAllStandardOutput();
|
QByteArray readAllStandardOutput();
|
||||||
@@ -118,16 +116,14 @@ public:
|
|||||||
void setWorkingDirectory(const QString &dir);
|
void setWorkingDirectory(const QString &dir);
|
||||||
void setEnvironment(const QStringList &env);
|
void setEnvironment(const QStringList &env);
|
||||||
bool isAdapter() const { return true; }
|
bool isAdapter() const { return true; }
|
||||||
//void attach();
|
|
||||||
void interruptInferior();
|
|
||||||
Q_SLOT void startInferiorEarly();
|
|
||||||
|
|
||||||
void startAdapter(const DebuggerStartParametersPtr &sp);
|
void startAdapter(const DebuggerStartParametersPtr &sp);
|
||||||
void prepareInferior();
|
void prepareInferior();
|
||||||
void startInferior();
|
void startInferior();
|
||||||
void shutdownInferior();
|
void interruptInferior();
|
||||||
void shutdownAdapter();
|
void shutdown();
|
||||||
|
|
||||||
|
Q_SLOT void startInferiorEarly();
|
||||||
void handleKill(const GdbResultRecord &, const QVariant &);
|
void handleKill(const GdbResultRecord &, const QVariant &);
|
||||||
void handleExit(const GdbResultRecord &, const QVariant &);
|
void handleExit(const GdbResultRecord &, const QVariant &);
|
||||||
void handleTargetRemote(const GdbResultRecord &, const QVariant &);
|
void handleTargetRemote(const GdbResultRecord &, const QVariant &);
|
||||||
|
|||||||
Reference in New Issue
Block a user