Debugger: Dissolve a few more setRunParameter() cases

Change-Id: I92d7b75c9a9758ab8c2ad8f9956ebcd8ecc9cb69
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
hjk
2017-08-24 19:30:35 +02:00
parent bdbd5a788b
commit 440f2ba028
5 changed files with 63 additions and 26 deletions

View File

@@ -1224,20 +1224,19 @@ bool DebuggerPluginPrivate::parseArgument(QStringList::const_iterator &it,
*errorMessage = msgParameterMissing(*it); *errorMessage = msgParameterMissing(*it);
return false; return false;
} }
DebuggerRunParameters rp; qint64 pid = it->section(':', 1, 1).toULongLong();
rp.startMode = AttachCrashedExternal; auto debugger = DebuggerRunTool::createFromKit(findUniversalCdbKit());
rp.crashParameter = it->section(QLatin1Char(':'), 0, 0); QTC_ASSERT(debugger, return false);
rp.attachPID = ProcessHandle(it->section(QLatin1Char(':'), 1, 1).toULongLong()); debugger->setStartMode(AttachCrashedExternal);
rp.displayName = tr("Crashed process %1").arg(rp.attachPID.pid()); debugger->setCrashParameter(it->section(':', 0, 0));
rp.startMessage = tr("Attaching to crashed process %1").arg(rp.attachPID.pid()); debugger->setAttachPid(pid);
if (!rp.attachPID.isValid()) { debugger->setRunControlName(tr("Crashed process %1").arg(pid));
debugger->setStartMessage(tr("Attaching to crashed process %1").arg(pid));
if (pid < 1) {
*errorMessage = DebuggerPlugin::tr("The parameter \"%1\" of option \"%2\" " *errorMessage = DebuggerPlugin::tr("The parameter \"%1\" of option \"%2\" "
"does not match the pattern <handle>:<pid>.").arg(*it, option); "does not match the pattern <handle>:<pid>.").arg(*it, option);
return false; return false;
} }
auto debugger = DebuggerRunTool::createFromKit(findUniversalCdbKit());
QTC_ASSERT(debugger, return false);
debugger->setRunParameters(rp);
m_scheduledStarts.append(debugger); m_scheduledStarts.append(debugger);
return true; return true;
} }

View File

@@ -198,6 +198,11 @@ void DebuggerRunTool::setAttachPid(ProcessHandle pid)
m_runParameters.attachPID = pid; m_runParameters.attachPID = pid;
} }
void DebuggerRunTool::setAttachPid(qint64 pid)
{
m_runParameters.attachPID = ProcessHandle(pid);
}
void DebuggerRunTool::setSysRoot(const QString &sysRoot) void DebuggerRunTool::setSysRoot(const QString &sysRoot)
{ {
m_runParameters.sysRoot = sysRoot; m_runParameters.sysRoot = sysRoot;
@@ -215,6 +220,11 @@ void DebuggerRunTool::setRemoteChannel(const QString &channel)
m_runParameters.remoteChannel = channel; m_runParameters.remoteChannel = channel;
} }
void DebuggerRunTool::setRemoteChannel(const QString &host, int port)
{
m_runParameters.remoteChannel = QString("%1:%2").arg(host).arg(port);
}
void DebuggerRunTool::setUseExtendedRemote(bool on) void DebuggerRunTool::setUseExtendedRemote(bool on)
{ {
m_runParameters.useExtendedRemote = on; m_runParameters.useExtendedRemote = on;
@@ -286,6 +296,17 @@ void DebuggerRunTool::setRunControlName(const QString &name)
m_runParameters.displayName = name; m_runParameters.displayName = name;
} }
void DebuggerRunTool::setStartMessage(const QString &msg)
{
m_runParameters.startMessage = msg;
}
void DebuggerRunTool::setCoreFileName(const QString &coreFile, bool isSnapshot)
{
m_runParameters.coreFile = coreFile;
m_runParameters.isSnapshot = isSnapshot;
}
void DebuggerRunTool::appendInferiorCommandLineArgument(const QString &arg) void DebuggerRunTool::appendInferiorCommandLineArgument(const QString &arg)
{ {
if (!m_runParameters.inferior.commandLineArguments.isEmpty()) if (!m_runParameters.inferior.commandLineArguments.isEmpty())
@@ -312,6 +333,16 @@ void DebuggerRunTool::addQmlServerInferiorCommandLineArgumentIfNeeded()
} }
} }
void DebuggerRunTool::setMasterEngineType(DebuggerEngineType engineType)
{
m_runParameters.masterEngineType = engineType;
}
void DebuggerRunTool::setCrashParameter(const QString &event)
{
m_runParameters.crashParameter = event;
}
void DebuggerRunTool::addExpectedSignal(const QString &signal) void DebuggerRunTool::addExpectedSignal(const QString &signal)
{ {
m_runParameters.expectedSignals.append(signal); m_runParameters.expectedSignals.append(signal);

View File

@@ -88,10 +88,14 @@ public:
void setInferior(const ProjectExplorer::Runnable &runnable); void setInferior(const ProjectExplorer::Runnable &runnable);
void setInferiorExecutable(const QString &executable); void setInferiorExecutable(const QString &executable);
void setRunControlName(const QString &name); void setRunControlName(const QString &name);
void setStartMessage(const QString &msg);
void appendInferiorCommandLineArgument(const QString &arg); void appendInferiorCommandLineArgument(const QString &arg);
void prependInferiorCommandLineArgument(const QString &arg); void prependInferiorCommandLineArgument(const QString &arg);
void addQmlServerInferiorCommandLineArgumentIfNeeded(); void addQmlServerInferiorCommandLineArgumentIfNeeded();
void setMasterEngineType(DebuggerEngineType engineType);
void setCrashParameter(const QString &event);
void addExpectedSignal(const QString &signal); void addExpectedSignal(const QString &signal);
void addSearchDirectory(const QString &dir); void addSearchDirectory(const QString &dir);
@@ -99,9 +103,12 @@ public:
void setCloseMode(DebuggerCloseMode closeMode); void setCloseMode(DebuggerCloseMode closeMode);
void setAttachPid(Utils::ProcessHandle pid); void setAttachPid(Utils::ProcessHandle pid);
void setAttachPid(qint64 pid);
void setSysRoot(const QString &sysRoot); void setSysRoot(const QString &sysRoot);
void setSymbolFile(const QString &symbolFile); void setSymbolFile(const QString &symbolFile);
void setRemoteChannel(const QString &channel); void setRemoteChannel(const QString &channel);
void setRemoteChannel(const QString &host, int port);
void setUseExtendedRemote(bool on); void setUseExtendedRemote(bool on);
void setUseContinueInsteadOfRun(bool on); void setUseContinueInsteadOfRun(bool on);
@@ -114,6 +121,8 @@ public:
void setQmlServer(const QUrl &qmlServer); void setQmlServer(const QUrl &qmlServer);
void setCoreFileName(const QString &core, bool isSnapshot = false);
void setIosPlatform(const QString &platform); void setIosPlatform(const QString &platform);
void setDeviceSymbolsRoot(const QString &deviceSymbolsRoot); void setDeviceSymbolsRoot(const QString &deviceSymbolsRoot);

View File

@@ -3294,9 +3294,6 @@ void GdbEngine::createSnapshot()
void GdbEngine::handleMakeSnapshot(const DebuggerResponse &response, const QString &coreFile) void GdbEngine::handleMakeSnapshot(const DebuggerResponse &response, const QString &coreFile)
{ {
if (response.resultClass == ResultDone) { if (response.resultClass == ResultDone) {
DebuggerRunParameters rp = runParameters();
rp.startMode = AttachCore;
rp.coreFile = coreFile;
//snapshot.setDate(QDateTime::currentDateTime()); //snapshot.setDate(QDateTime::currentDateTime());
StackFrames frames = stackHandler()->frames(); StackFrames frames = stackHandler()->frames();
QString function = "<unknown>"; QString function = "<unknown>";
@@ -3304,11 +3301,12 @@ void GdbEngine::handleMakeSnapshot(const DebuggerResponse &response, const QStri
const StackFrame &frame = frames.at(0); const StackFrame &frame = frames.at(0);
function = frame.function + ":" + QString::number(frame.line); function = frame.function + ":" + QString::number(frame.line);
} }
rp.displayName = function + ": " + QDateTime::currentDateTime().toString(); auto debugger = DebuggerRunTool::createFromRunConfiguration(runControl()->runConfiguration());
rp.isSnapshot = true; QTC_ASSERT(debugger, return);
auto rc = new RunControl(runControl()->runConfiguration(), ProjectExplorer::Constants::DEBUG_RUN_MODE); debugger->setStartMode(AttachCore);
(void) new DebuggerRunTool(rc, rp); debugger->setRunControlName(function + ": " + QDateTime::currentDateTime().toString());
ProjectExplorerPlugin::startRunControl(rc); debugger->setCoreFileName(coreFile, true);
debugger->startRunControl();
} else { } else {
QString msg = response.data["msg"].data(); QString msg = response.data["msg"].data();
AsynchronousMessageBox::critical(tr("Snapshot Creation Error"), AsynchronousMessageBox::critical(tr("Snapshot Creation Error"),

View File

@@ -207,17 +207,17 @@ void GdbServerStarter::attach(int port)
return; return;
} }
DebuggerRunParameters rp; QString remoteChannel = QString("%1:%2").arg(d->device->sshParameters().host).arg(port);
rp.masterEngineType = GdbEngineType;
rp.remoteChannel = QString("%1:%2").arg(d->device->sshParameters().host).arg(port);
rp.displayName = tr("Remote: \"%1\"").arg(rp.remoteChannel);
rp.inferior.executable = localExecutable;
rp.startMode = AttachToRemoteServer;
rp.closeMode = KillAtClose;
auto debugger = DebuggerRunTool::createFromKit(d->kit); auto debugger = DebuggerRunTool::createFromKit(d->kit);
QTC_ASSERT(debugger, return); QTC_ASSERT(debugger, return);
debugger->setRunParameters(rp); debugger->setMasterEngineType(GdbEngineType);
debugger->setRemoteChannel(remoteChannel);
debugger->setRunControlName(tr("Remote: \"%1\"").arg(remoteChannel));
debugger->setInferiorExecutable(localExecutable);
debugger->setStartMode(AttachToRemoteServer);
debugger->setCloseMode(KillAtClose);
debugger->startRunControl(); debugger->startRunControl();
} }