forked from qt-creator/qt-creator
Debugger: Try harder to find a usable device
In remote setups without proper run configuration (e.g. attach using the menu) there was no device available. In some situation there's access to a kit, though, containing the right device. Use it. Task-number: QTCREATORBUG-20331 Change-Id: I54523f71fc10c9959901f36f3d62872d139279e5 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -1188,7 +1188,8 @@ bool DebuggerPluginPrivate::parseArgument(QStringList::const_iterator &it,
|
|||||||
if (!kit)
|
if (!kit)
|
||||||
kit = guessKitFromAbis(Abi::abisOfBinary(FileName::fromString(executable)));
|
kit = guessKitFromAbis(Abi::abisOfBinary(FileName::fromString(executable)));
|
||||||
|
|
||||||
auto runControl = new RunControl(nullptr, ProjectExplorer::Constants::DEBUG_RUN_MODE);
|
IDevice::ConstPtr device = DeviceKitInformation::device(kit);
|
||||||
|
auto runControl = new RunControl(device, ProjectExplorer::Constants::DEBUG_RUN_MODE);
|
||||||
auto debugger = new DebuggerRunTool(runControl, kit);
|
auto debugger = new DebuggerRunTool(runControl, kit);
|
||||||
debugger->setInferiorExecutable(executable);
|
debugger->setInferiorExecutable(executable);
|
||||||
if (pid) {
|
if (pid) {
|
||||||
@@ -1960,7 +1961,8 @@ void DebuggerPluginPrivate::attachCore()
|
|||||||
setConfigValue("LastExternalStartScript", dlg.overrideStartScript());
|
setConfigValue("LastExternalStartScript", dlg.overrideStartScript());
|
||||||
setConfigValue("LastForceLocalCoreFile", dlg.forcesLocalCoreFile());
|
setConfigValue("LastForceLocalCoreFile", dlg.forcesLocalCoreFile());
|
||||||
|
|
||||||
auto runControl = new RunControl(nullptr, ProjectExplorer::Constants::DEBUG_RUN_MODE);
|
IDevice::ConstPtr device = DeviceKitInformation::device(dlg.kit());
|
||||||
|
auto runControl = new RunControl(device, ProjectExplorer::Constants::DEBUG_RUN_MODE);
|
||||||
auto debugger = new DebuggerRunTool(runControl, dlg.kit());
|
auto debugger = new DebuggerRunTool(runControl, dlg.kit());
|
||||||
debugger->setInferiorExecutable(dlg.localExecutableFile());
|
debugger->setInferiorExecutable(dlg.localExecutableFile());
|
||||||
debugger->setCoreFileName(dlg.localCoreFile());
|
debugger->setCoreFileName(dlg.localCoreFile());
|
||||||
@@ -1987,7 +1989,8 @@ void DebuggerPluginPrivate::startRemoteCdbSession()
|
|||||||
return;
|
return;
|
||||||
setConfigValue(connectionKey, dlg.connection());
|
setConfigValue(connectionKey, dlg.connection());
|
||||||
|
|
||||||
auto runControl = new RunControl(nullptr, ProjectExplorer::Constants::DEBUG_RUN_MODE);
|
IDevice::ConstPtr device = DeviceKitInformation::device(kit);
|
||||||
|
auto runControl = new RunControl(device, ProjectExplorer::Constants::DEBUG_RUN_MODE);
|
||||||
auto debugger = new DebuggerRunTool(runControl, kit);
|
auto debugger = new DebuggerRunTool(runControl, kit);
|
||||||
debugger->setStartMode(AttachToRemoteServer);
|
debugger->setStartMode(AttachToRemoteServer);
|
||||||
debugger->setCloseMode(KillAtClose);
|
debugger->setCloseMode(KillAtClose);
|
||||||
@@ -2045,7 +2048,7 @@ void DebuggerPluginPrivate::attachToRunningApplication()
|
|||||||
if (device->type() == PE::DESKTOP_DEVICE_TYPE) {
|
if (device->type() == PE::DESKTOP_DEVICE_TYPE) {
|
||||||
attachToRunningProcess(kit, process, false);
|
attachToRunningProcess(kit, process, false);
|
||||||
} else {
|
} else {
|
||||||
auto runControl = new RunControl(nullptr, ProjectExplorer::Constants::DEBUG_RUN_MODE);
|
auto runControl = new RunControl(device, ProjectExplorer::Constants::DEBUG_RUN_MODE);
|
||||||
auto debugger = new RemoteAttachRunner(runControl, kit, process.pid);
|
auto debugger = new RemoteAttachRunner(runControl, kit, process.pid);
|
||||||
debugger->startRunControl();
|
debugger->startRunControl();
|
||||||
}
|
}
|
||||||
|
@@ -884,6 +884,12 @@ RunControl::RunControl(RunConfiguration *runConfiguration, Core::Id mode) :
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RunControl::RunControl(const IDevice::ConstPtr &device, Core::Id mode)
|
||||||
|
: RunControl(nullptr, mode)
|
||||||
|
{
|
||||||
|
d->device = device;
|
||||||
|
}
|
||||||
|
|
||||||
RunControl::~RunControl()
|
RunControl::~RunControl()
|
||||||
{
|
{
|
||||||
#ifdef WITH_JOURNALD
|
#ifdef WITH_JOURNALD
|
||||||
|
@@ -431,6 +431,7 @@ class PROJECTEXPLORER_EXPORT RunControl : public QObject
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
RunControl(RunConfiguration *runConfiguration, Core::Id mode);
|
RunControl(RunConfiguration *runConfiguration, Core::Id mode);
|
||||||
|
RunControl(const IDevice::ConstPtr &device, Core::Id mode);
|
||||||
~RunControl() override;
|
~RunControl() override;
|
||||||
|
|
||||||
void initiateStart();
|
void initiateStart();
|
||||||
|
Reference in New Issue
Block a user