From cbb3aee07662b59a71e6bd0db43cc1fd1d1e792e Mon Sep 17 00:00:00 2001 From: Denis Shienkov Date: Sun, 29 Nov 2015 18:04:19 +0300 Subject: [PATCH] BareMetal: Kill the GDB server provider when debugging stopped On Windows when debugging is stopped, the QProcess::terminate() method does nothing. At least it belongs to the started OpenOCD process. It is better to use Utils::QtcProcess with setup of a setUseCtrlCStub(true) instead of QProcess. Change-Id: I954377dc94de77fbae630e096a252530f12aaf2d Reviewed-by: Orgad Shaneh Reviewed-by: Tim Sander --- src/plugins/baremetal/gdbserverproviderprocess.cpp | 10 ++++++++-- src/plugins/baremetal/gdbserverproviderprocess.h | 4 +++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/plugins/baremetal/gdbserverproviderprocess.cpp b/src/plugins/baremetal/gdbserverproviderprocess.cpp index 650ce92d765..2fc59b994bb 100644 --- a/src/plugins/baremetal/gdbserverproviderprocess.cpp +++ b/src/plugins/baremetal/gdbserverproviderprocess.cpp @@ -45,8 +45,11 @@ GdbServerProviderProcess::GdbServerProviderProcess( const QSharedPointer &device, QObject *parent) : ProjectExplorer::DeviceProcess(device, parent) - , m_process(new QProcess(this)) + , m_process(new Utils::QtcProcess(this)) { + if (Utils::HostOsInfo::isWindowsHost()) + m_process->setUseCtrlCStub(true); + connect(m_process, SIGNAL(error(QProcess::ProcessError)), SIGNAL(error(QProcess::ProcessError))); connect(m_process, SIGNAL(finished(int)), SIGNAL(finished())); @@ -62,7 +65,10 @@ GdbServerProviderProcess::GdbServerProviderProcess( void GdbServerProviderProcess::start(const QString &executable, const QStringList &arguments) { QTC_ASSERT(m_process->state() == QProcess::NotRunning, return); - m_process->start(executable, arguments); + QString args; + Utils::QtcProcess::addArgs(&args, arguments); + m_process->setCommand(executable, args); + m_process->start(); } void GdbServerProviderProcess::interrupt() diff --git a/src/plugins/baremetal/gdbserverproviderprocess.h b/src/plugins/baremetal/gdbserverproviderprocess.h index dcfbb229fb6..5dbc0da2c2e 100644 --- a/src/plugins/baremetal/gdbserverproviderprocess.h +++ b/src/plugins/baremetal/gdbserverproviderprocess.h @@ -33,6 +33,8 @@ #include +namespace Utils { class QtcProcess; } + namespace BareMetal { namespace Internal { @@ -64,7 +66,7 @@ public: qint64 write(const QByteArray &data); private: - QProcess * const m_process; + Utils::QtcProcess *m_process; }; } // namespace Internal