diff --git a/src/plugins/baremetal/baremetaldevice.cpp b/src/plugins/baremetal/baremetaldevice.cpp index 2df60b0546b..daa93d5eb39 100644 --- a/src/plugins/baremetal/baremetaldevice.cpp +++ b/src/plugins/baremetal/baremetaldevice.cpp @@ -31,11 +31,15 @@ #include "baremetaldevice.h" #include "baremetaldeviceconfigurationwidget.h" - +#include "defaultgdbserverprovider.h" +#include "gdbserverprovidermanager.h" #include "gdbserverproviderprocess.h" #include + +#include #include + #include using namespace ProjectExplorer; @@ -73,7 +77,17 @@ void BareMetalDevice::setGdbServerProviderId(const QString &id) void BareMetalDevice::fromMap(const QVariantMap &map) { IDevice::fromMap(map); - setGdbServerProviderId(map.value(QLatin1String(gdbServerProviderIdKeyC)).toString()); + QString gdbServerProvider = map.value(QLatin1String(gdbServerProviderIdKeyC)).toString(); + if (gdbServerProvider.isEmpty()) { + const QSsh::SshConnectionParameters sshParams = sshParameters(); + DefaultGdbServerProvider *newProvider = new DefaultGdbServerProvider; + newProvider->setDisplayName(displayName()); + newProvider->m_host = sshParams.host; + newProvider->m_port = sshParams.port; + GdbServerProviderManager::instance()->registerProvider(newProvider); + gdbServerProvider = newProvider->id(); + } + setGdbServerProviderId(gdbServerProvider); } QVariantMap BareMetalDevice::toMap() const diff --git a/src/plugins/baremetal/defaultgdbserverprovider.h b/src/plugins/baremetal/defaultgdbserverprovider.h index c9390f39814..53379d4409b 100644 --- a/src/plugins/baremetal/defaultgdbserverprovider.h +++ b/src/plugins/baremetal/defaultgdbserverprovider.h @@ -65,6 +65,7 @@ private: friend class DefaultGdbServerProviderConfigWidget; friend class DefaultGdbServerProviderFactory; + friend class BareMetalDevice; }; class DefaultGdbServerProviderFactory : public GdbServerProviderFactory