Commit 8f1a161c authored by hjk's avatar hjk

Debugger: Merge EngineSetup and InferiorSetup start phases

It was needed in the past to trigger e.g. gdbserver setup in
remote cases which is nowadays handled by separate RunWorkers.

Change-Id: I30bce071dab0779cce2e7abef7b31550d8539461
Reviewed-by: Christian Stenger's avatarChristian Stenger <christian.stenger@qt.io>
Reviewed-by: David Schulz's avatarDavid Schulz <david.schulz@qt.io>
parent 2427f126
......@@ -541,17 +541,17 @@ void CdbEngine::setupEngine()
showMessage(QString("%1 running as %2").
arg(QDir::toNativeSeparators(executable)).arg(pid), LogMisc);
m_hasDebuggee = true;
m_initialSessionIdleHandled = false;
if (isRemote) { // We do not get an 'idle' in a remote session, but are accessible
m_accessible = true;
runCommand({".load " + extensionFileName, NoFlags});
notifyEngineSetupOk();
handleInitialSessionIdle();
}
}
void CdbEngine::setupInferior()
void CdbEngine::handleInitialSessionIdle()
{
if (debug)
qDebug("setupInferior");
m_initialSessionIdleHandled = true;
const DebuggerRunParameters &rp = runParameters();
if (!rp.commandsAfterConnect.isEmpty())
runCommand({rp.commandsAfterConnect, NoFlags});
......@@ -582,13 +582,13 @@ void CdbEngine::setupInferior()
if (response.resultClass == ResultDone)
notifyInferiorPid(response.data.toProcessHandle());
if (response.resultClass == ResultDone || runParameters().startMode == AttachCore) {
STATE_DEBUG(state(), Q_FUNC_INFO, __LINE__, "notifyInferiorSetupOk")
notifyInferiorSetupOk();
STATE_DEBUG(state(), Q_FUNC_INFO, __LINE__, "notifyEngineSetupOk")
notifyEngineSetupOk();
} else {
showMessage(QString("Failed to determine inferior pid: %1").
arg(response.data["msg"].data()), LogError);
STATE_DEBUG(state(), Q_FUNC_INFO, __LINE__, "notifyInferiorSetupFailed")
notifyInferiorSetupFailed();
STATE_DEBUG(state(), Q_FUNC_INFO, __LINE__, "notifyEngineSetupFailed")
notifyEngineSetupFailed();
}
}});
}
......@@ -2136,9 +2136,8 @@ void CdbEngine::handleSessionIdle(const QString &message)
break;
}
if (state() == EngineSetupRequested) { // Temporary stop at beginning
STATE_DEBUG(state(), Q_FUNC_INFO, __LINE__, "notifyEngineSetupOk")
notifyEngineSetupOk();
if (!m_initialSessionIdleHandled) { // Temporary stop at beginning
handleInitialSessionIdle();
// Store stop reason to be handled in runEngine().
if (runParameters().startMode == AttachCore) {
m_coreStopReason.reset(new GdbMi);
......
......@@ -57,7 +57,6 @@ public:
DebuggerEngine *cppEngine() override { return this; }
void setupEngine() override;
void setupInferior() override;
void runEngine() override;
void shutdownInferior() override;
void shutdownEngine() override;
......@@ -175,6 +174,7 @@ private:
void postResolveSymbol(const QString &module, const QString &function,
DisassemblerAgent *agent);
void showScriptMessages(const QString &message) const;
void handleInitialSessionIdle();
// Builtin commands
void handleStackTrace(const DebuggerResponse &);
void handleRegisters(const DebuggerResponse &);
......@@ -247,6 +247,7 @@ private:
QList<SourcePathMapping> m_sourcePathMappings;
QScopedPointer<GdbMi> m_coreStopReason;
int m_pythonVersion = 0; // 0xMMmmpp MM = major; mm = minor; pp = patch
bool m_initialSessionIdleHandled = false;
};
} // namespace Internal
......
......@@ -81,10 +81,6 @@ enum DebuggerState
EngineSetupFailed,
EngineSetupOk,
InferiorSetupRequested,
InferiorSetupFailed,
InferiorSetupOk,
EngineRunRequested,
EngineRunFailed,
......
......@@ -336,9 +336,6 @@ QString DebuggerEngine::stateName(int s)
SN(EngineSetupOk)
SN(EngineSetupFailed)
SN(EngineRunFailed)
SN(InferiorSetupRequested)
SN(InferiorSetupFailed)
SN(InferiorSetupOk)
SN(EngineRunRequested)
SN(InferiorRunRequested)
SN(InferiorRunOk)
......@@ -577,14 +574,7 @@ static bool isAllowedTransition(DebuggerState from, DebuggerState to)
// state before calling notifyEngineSetupFailed
return to == DebuggerFinished;
case EngineSetupOk:
return to == InferiorSetupRequested || to == EngineShutdownRequested;
case InferiorSetupRequested:
return to == InferiorSetupOk || to == InferiorSetupFailed;
case InferiorSetupFailed:
return to == EngineShutdownRequested;
case InferiorSetupOk:
return to == EngineRunRequested;
return to == EngineRunRequested || to == EngineShutdownRequested;
case EngineRunRequested:
return to == EngineRunFailed
......@@ -662,67 +652,37 @@ void DebuggerEngine::notifyEngineSetupFailed()
void DebuggerEngine::notifyEngineSetupOk()
{
//#ifdef WITH_BENCHMARK
// CALLGRIND_START_INSTRUMENTATION;
//#endif
showMessage("NOTE: ENGINE SETUP OK");
d->m_progress.setProgressValue(250);
QTC_ASSERT(state() == EngineSetupRequested, qDebug() << this << state());
setState(EngineSetupOk);
if (isMasterEngine() && runTool())
if (isMasterEngine() && runTool()) {
runTool()->aboutToNotifyInferiorSetupOk(); // FIXME: Remove, only used for Android.
runTool()->reportStarted();
}
showMessage("CALL: SETUP INFERIOR");
d->m_progress.setProgressValue(250);
if (isMasterEngine()) {
// Slaves will get called setupSlaveInferior() below.
setState(InferiorSetupRequested);
setupInferior();
setState(EngineRunRequested);
showMessage("CALL: RUN ENGINE");
d->m_progress.setProgressValue(300);
runEngine();
}
}
void DebuggerEngine::setupSlaveInferior()
{
QTC_CHECK(state() == EngineSetupOk);
setState(InferiorSetupRequested);
showMessage("CALL: SETUP SLAVE INFERIOR");
setupInferior();
}
void DebuggerEngine::notifyInferiorSetupFailed()
{
showMessage("NOTE: INFERIOR SETUP FAILED");
QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << this << state());
showStatusMessage(tr("Setup failed."));
setState(InferiorSetupFailed);
if (isMasterEngine())
d->doShutdownEngine();
}
void DebuggerEngine::notifyInferiorSetupOk()
{
#ifdef WITH_BENCHMARK
CALLGRIND_START_INSTRUMENTATION;
#endif
if (isMasterEngine())
runTool()->aboutToNotifyInferiorSetupOk(); // FIXME: Remove, only used for Android.
showMessage("NOTE: INFERIOR SETUP OK");
QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << this << state());
setState(InferiorSetupOk);
if (isMasterEngine())
d->doRunEngine();
}
void DebuggerEngine::runSlaveEngine()
{
QTC_ASSERT(isSlaveEngine(), return);
QTC_CHECK(state() == InferiorSetupOk);
d->doRunEngine();
QTC_CHECK(state() == EngineSetupOk);
setState(EngineRunRequested);
showMessage("CALL: RUN SLAVE ENGINE");
d->m_progress.setProgressValue(300);
runEngine();
}
void DebuggerEnginePrivate::doRunEngine()
{
m_engine->setState(EngineRunRequested);
m_engine->showMessage("CALL: RUN ENGINE");
m_progress.setProgressValue(300);
m_engine->runEngine();
}
void DebuggerEngine::notifyEngineRunOkAndInferiorUnrunnable()
{
......@@ -1139,7 +1099,6 @@ bool DebuggerEngine::debuggerActionsEnabled() const
bool DebuggerEngine::debuggerActionsEnabled(DebuggerState state)
{
switch (state) {
case InferiorSetupRequested:
case InferiorRunOk:
case InferiorUnrunnable:
case InferiorStopOk:
......@@ -1147,14 +1106,12 @@ bool DebuggerEngine::debuggerActionsEnabled(DebuggerState state)
case InferiorStopRequested:
case InferiorRunRequested:
case InferiorRunFailed:
case InferiorSetupOk:
case DebuggerNotReady:
case EngineSetupRequested:
case EngineSetupOk:
case EngineSetupFailed:
case EngineRunRequested:
case EngineRunFailed:
case InferiorSetupFailed:
case InferiorStopFailed:
case InferiorShutdownRequested:
case InferiorShutdownOk:
......@@ -1219,8 +1176,7 @@ void DebuggerEngine::quitDebugger()
notifyEngineSetupFailed();
break;
case EngineSetupOk:
setState(InferiorSetupRequested);
notifyInferiorSetupFailed();
notifyEngineSetupFailed();
break;
case EngineRunRequested:
notifyEngineRunFailed();
......@@ -1232,9 +1188,6 @@ void DebuggerEngine::quitDebugger()
case DebuggerFinished:
case InferiorShutdownOk:
break;
case InferiorSetupRequested:
notifyInferiorSetupFailed();
break;
default:
// FIXME: We should disable the actions connected to that.
notifyInferiorIll();
......
......@@ -387,9 +387,6 @@ protected:
void notifyEngineSetupFailed();
void notifyEngineRunFailed();
void notifyInferiorSetupOk();
void notifyInferiorSetupFailed();
void notifyEngineRunAndInferiorRunOk();
void notifyEngineRunAndInferiorStopOk();
void notifyEngineRunOkAndInferiorUnrunnable(); // Called by CoreAdapter.
......@@ -424,7 +421,6 @@ protected:
void notifyEngineIll();
virtual void setupEngine() = 0;
virtual void setupInferior() = 0;
virtual void runEngine() = 0;
virtual void shutdownInferior() = 0;
virtual void shutdownEngine() = 0;
......@@ -466,7 +462,6 @@ protected:
void showStoppedByExceptionMessageBox(const QString &description);
virtual void setupSlaveEngine();
virtual void setupSlaveInferior();
virtual void runSlaveEngine();
virtual void shutdownSlaveEngine();
......
......@@ -234,35 +234,23 @@
EngineSetupOk
+
[calls RunControl->StartSuccessful]
+
InferiorSetupRequested
+
(calls *Engine->setupInferior())
| |
| |
{notify- {notify-
Inferior- Inferior-
SetupOk} SetupFailed}
+ +
+ ` +-+-> InferiorSetupFailed +-+-+-+-+-+->.
+ +
InferiorSetupOk +
+ +
EngineRunRequested +
+ +
(calls *Engine->runEngine()) +
/ | | \ +
/ | | \ +
| (core) | (attach) | | +
| | | | +
{notify- {notifyER&- {notifyER&- {notify- +
Inferior- Inferior- Inferior- EngineRun- +
Unrunnable} StopOk} RunOk} Failed} +
+ + + + +
InferiorUnrunnable + InferiorRunOk + +
+ + +
InferiorStopOk EngineRunFailed +
+ v
+
+
EngineRunRequested
+
(calls *Engine->runEngine())
/ | | \
/ | | \
| (core) | (attach) | |
| | | |
{notify- {notifyER&- {notifyER&- {notify-
Inferior- Inferior- Inferior- EngineRun-
Unrunnable} StopOk} RunOk} Failed}
+ + + +
InferiorUnrunnable + InferiorRunOk +
+ +
InferiorStopOk EngineRunFailed
+
`-+-+-+-+-+-+-+-+-+-+-+>-+
+
+
......@@ -327,11 +315,7 @@ sg1: DebuggerNotReady -> EngineSetupRequested
sg1: EngineSetupRequested -> EngineSetupOk [ label="notifyEngineSetupOk", style="dashed" ];
sg1: EngineSetupRequested -> EngineSetupFailed [ label= "notifyEngineSetupFailed", style="dashed"];
sg1: EngineSetupFailed -> DebuggerFinished [ label= "RunControl::StartFailed" ];
sg1: EngineSetupOk -> InferiorSetupRequested [ label= "RunControl::StartSuccessful" ];
sg1: InferiorSetupRequested -> InferiorSetupOk [ label="notifyInferiorSetupOk", style="dashed" ];
sg1: InferiorSetupRequested -> InferiorSetupFailed [ label="notifyInferiorFailed", style="dashed" ];
sg1: InferiorSetupOk -> EngineRunRequested
sg1: InferiorSetupFailed -> EngineShutdownRequested
sg1: EngineSetupOk -> EngineRunRequested [ label= "RunControl::StartSuccessful" ];
sg1: EngineRunRequested -> InferiorUnrunnable [ label="notifyInferiorUnrunnable", style="dashed" ];
sg1: EngineRunRequested -> InferiorStopOk [ label="notifyEngineRunAndInferiorStopOk", style="dashed" ];
sg1: EngineRunRequested -> InferiorRunOk [ label="notifyEngineRunAndInferiorRunOk", style="dashed" ];
......@@ -495,7 +479,6 @@ public:
~DummyEngine() override {}
void setupEngine() override {}
void setupInferior() override {}
void runEngine() override {}
void shutdownEngine() override {}
void shutdownInferior() override {}
......
......@@ -97,8 +97,6 @@ static bool stateAcceptsGdbCommands(DebuggerState state)
case EngineSetupOk:
case EngineSetupFailed:
case InferiorUnrunnable:
case InferiorSetupRequested:
case InferiorSetupFailed:
case EngineRunRequested:
case InferiorRunRequested:
case InferiorRunOk:
......@@ -111,7 +109,6 @@ static bool stateAcceptsGdbCommands(DebuggerState state)
return true;
case DebuggerNotReady:
case InferiorStopFailed:
case InferiorSetupOk:
case EngineRunFailed:
case InferiorRunFailed:
case EngineShutdownOk:
......@@ -527,7 +524,7 @@ void GdbEngine::handleAsyncOutput(const QString &asyncClass, const GdbMi &result
// FIXME: Breakpoints on Windows are exceptions which are thrown in newly
// created threads so we have to filter out the running threads messages when
// we request a stop.
} else if (state() == InferiorRunOk || state() == InferiorSetupRequested) {
} else if (state() == InferiorRunOk || state() == EngineSetupRequested) {
// We get multiple *running after thread creation and in Windows terminals.
showMessage(QString("NOTE: INFERIOR STILL RUNNING IN STATE %1.").
arg(DebuggerEngine::stateName(state())));
......@@ -1608,7 +1605,7 @@ void GdbEngine::handlePythonSetup(const DebuggerResponse &response)
loadInitScript();
CHECK_STATE(EngineSetupRequested);
showMessage("ENGINE SUCCESSFULLY STARTED");
notifyEngineSetupOk();
setupInferior();
} else {
QString msg = response.data["msg"].data();
if (msg.contains("Python scripting is not supported in this copy of GDB.")) {
......@@ -2564,7 +2561,7 @@ void GdbEngine::handleBreakCondition(const DebuggerResponse &, Breakpoint bp)
bool GdbEngine::stateAcceptsBreakpointChanges() const
{
switch (state()) {
case InferiorSetupRequested:
case EngineSetupRequested:
case InferiorRunRequested:
case InferiorRunOk:
case InferiorStopRequested:
......@@ -4030,7 +4027,6 @@ void GdbEngine::resetInferior()
void GdbEngine::handleAdapterStartFailed(const QString &msg, Id settingsIdHint)
{
CHECK_STATE(EngineSetupOk);
showMessage("ADAPTER START FAILED");
if (!msg.isEmpty() && !Internal::isTestRun()) {
const QString title = tr("Adapter Start Failed");
......@@ -4055,7 +4051,7 @@ void GdbEngine::handleInferiorPrepared()
{
const DebuggerRunParameters &rp = runParameters();
CHECK_STATE(InferiorSetupRequested);
CHECK_STATE(EngineSetupRequested);
if (!rp.commandsAfterConnect.isEmpty()) {
const QString commands = expand(rp.commandsAfterConnect);
......@@ -4063,17 +4059,6 @@ void GdbEngine::handleInferiorPrepared()
runCommand({command, NativeCommand});
}
//runCommand("set follow-exec-mode new");
if (rp.breakOnMain)
runCommand({"tbreak " + mainFunction()});
// Initial attempt to set breakpoints.
if (rp.startMode != AttachCore) {
showStatusMessage(tr("Setting breakpoints..."));
showMessage(tr("Setting breakpoints..."));
attemptBreakpointSynchronization();
}
if (m_commandForToken.isEmpty()) {
finishInferiorSetup();
} else {
......@@ -4084,7 +4069,7 @@ void GdbEngine::handleInferiorPrepared()
void GdbEngine::finishInferiorSetup()
{
CHECK_STATE(InferiorSetupRequested);
CHECK_STATE(EngineSetupRequested);
if (runParameters().startMode != AttachCore) { // No breakpoints in core files.
const bool onAbort = boolSetting(BreakOnAbort);
......@@ -4103,7 +4088,7 @@ void GdbEngine::finishInferiorSetup()
// response, as the command is synchronous from Creator's point of view,
// and even if it fails (e.g. due to stripped binaries), continuing with
// the start up is the best we can do.
notifyInferiorSetupOk();
notifyEngineSetupOk();
}
void GdbEngine::handleDebugInfoLocation(const DebuggerResponse &response)
......@@ -4129,7 +4114,7 @@ void GdbEngine::notifyInferiorSetupFailedHelper(const QString &msg)
}
showMessage("INFERIOR START FAILED");
AsynchronousMessageBox::critical(tr("Failed to Start Application"), msg);
notifyInferiorSetupFailed();
notifyEngineSetupFailed();
}
void GdbEngine::createFullBacktrace()
......@@ -4266,13 +4251,24 @@ bool GdbEngine::isTermEngine() const
void GdbEngine::setupInferior()
{
CHECK_STATE(InferiorSetupRequested);
CHECK_STATE(EngineSetupRequested);
const DebuggerRunParameters &rp = runParameters();
//runCommand("set follow-exec-mode new");
if (rp.breakOnMain)
runCommand({"tbreak " + mainFunction()});
// Initial attempt to set breakpoints.
if (rp.startMode != AttachCore) {
showStatusMessage(tr("Setting breakpoints..."));
showMessage(tr("Setting breakpoints..."));
attemptBreakpointSynchronization();
}
if (rp.startMode == AttachToRemoteProcess) {
notifyInferiorSetupOk();
notifyEngineSetupOk();
} else if (isAttachEngine()) {
// Task 254674 does not want to remove them
......@@ -4351,7 +4347,7 @@ void GdbEngine::setupInferior()
if (!cinfo.isCore) {
AsynchronousMessageBox::warning(tr("Error Loading Core File"),
tr("The specified file does not appear to be a core file."));
notifyInferiorSetupFailed();
notifyEngineSetupFailed();
return;
}
......@@ -4359,7 +4355,7 @@ void GdbEngine::setupInferior()
if (executable.isEmpty()) {
AsynchronousMessageBox::warning(tr("Error Loading Symbols"),
tr("No executable to load symbols from specified core."));
notifyInferiorSetupFailed();
notifyEngineSetupFailed();
return;
}
}
......@@ -4501,7 +4497,7 @@ void GdbEngine::handleAttach(const DebuggerResponse &response)
} else if (isRemoteEngine()) {
CHECK_STATE(InferiorSetupRequested);
CHECK_STATE(EngineSetupRequested);
switch (response.resultClass) {
case ResultDone:
case ResultRunning: {
......@@ -4587,7 +4583,7 @@ void GdbEngine::shutdownEngine()
void GdbEngine::handleFileExecAndSymbols(const DebuggerResponse &response)
{
CHECK_STATE(InferiorSetupRequested);
CHECK_STATE(EngineSetupRequested);
if (isRemoteEngine()) {
if (response.resultClass == ResultDone) {
......@@ -4672,14 +4668,14 @@ void GdbEngine::handleExecRun(const DebuggerResponse &response)
void GdbEngine::handleSetTargetAsync(const DebuggerResponse &response)
{
CHECK_STATE(InferiorSetupRequested);
CHECK_STATE(EngineSetupRequested);
if (response.resultClass == ResultError)
qDebug() << "Adapter too old: does not support asynchronous mode.";
}
void GdbEngine::callTargetRemote()
{
CHECK_STATE(InferiorSetupRequested);
CHECK_STATE(EngineSetupRequested);
QString channel = runParameters().remoteChannel;
// Don't touch channels with explicitly set protocols.
......@@ -4705,7 +4701,7 @@ void GdbEngine::callTargetRemote()
void GdbEngine::handleTargetRemote(const DebuggerResponse &response)
{
CHECK_STATE(InferiorSetupRequested);
CHECK_STATE(EngineSetupRequested);
if (response.resultClass == ResultDone) {
// gdb server will stop the remote application itself.
showMessage("INFERIOR STARTED");
......@@ -4722,7 +4718,7 @@ void GdbEngine::handleTargetRemote(const DebuggerResponse &response)
void GdbEngine::handleTargetExtendedRemote(const DebuggerResponse &response)
{
CHECK_STATE(InferiorSetupRequested);
CHECK_STATE(EngineSetupRequested);
if (response.resultClass == ResultDone) {
showMessage("ATTACHED TO GDB SERVER STARTED");
showMessage(msgAttachedToStoppedInferior(), StatusBar);
......@@ -4763,7 +4759,7 @@ void GdbEngine::handleTargetExtendedRemote(const DebuggerResponse &response)
void GdbEngine::handleTargetExtendedAttach(const DebuggerResponse &response)
{
CHECK_STATE(InferiorSetupRequested);
CHECK_STATE(EngineSetupRequested);
if (response.resultClass == ResultDone) {
// gdb server will stop the remote application itself.
handleInferiorPrepared();
......@@ -4774,7 +4770,7 @@ void GdbEngine::handleTargetExtendedAttach(const DebuggerResponse &response)
void GdbEngine::handleTargetQnx(const DebuggerResponse &response)
{
CHECK_STATE(InferiorSetupRequested);
CHECK_STATE(EngineSetupRequested);
if (response.resultClass == ResultDone) {
// gdb server will stop the remote application itself.
showMessage("INFERIOR STARTED");
......@@ -4796,7 +4792,7 @@ void GdbEngine::handleTargetQnx(const DebuggerResponse &response)
void GdbEngine::handleSetNtoExecutable(const DebuggerResponse &response)
{
CHECK_STATE(InferiorSetupRequested);
CHECK_STATE(EngineSetupRequested);
switch (response.resultClass) {
case ResultDone:
case ResultRunning: {
......
......@@ -405,7 +405,6 @@ private: ////////// General Interface //////////
bool isTermEngine() const;
void setupEngine() final;
void setupInferior() final;
void runEngine() final;
void shutdownEngine() final;
......@@ -438,6 +437,7 @@ private: ////////// General Interface //////////
QString coreFileName() const;
QString mainFunction() const;
void setupInferior();
Utils::QtcProcess m_gdbProc;
OutputCollector m_outputCollector;
......
......@@ -199,13 +199,7 @@ void LldbEngine::setupEngine()
return;
}
m_lldbProc.waitForReadyRead(1000);
m_lldbProc.write("sc print('@\\nlldbstartupok@\\n')\n");
}
// FIXME: splitting of startLldb() necessary to support LLDB <= 310 - revert asap
void LldbEngine::startLldbStage2()
{
showMessage("ADAPTER STARTED");
showStatusMessage(tr("Setting up inferior..."));
const QByteArray dumperSourcePath =
......@@ -216,13 +210,11 @@ void LldbEngine::startLldbStage2()
m_lldbProc.write("script print(dir())\n");
m_lldbProc.write("script theDumper = Dumper()\n"); // This triggers reportState("enginesetupok")
const QString commands = nativeStartupCommands();
QString commands = nativeStartupCommands();
if (!commands.isEmpty())
m_lldbProc.write(commands.toLocal8Bit() + '\n');
}
void LldbEngine::setupInferior()
{
const QString path = stringSetting(ExtraDumperFile);
if (!path.isEmpty() && QFileInfo(path).isReadable()) {
DebuggerCommand cmd("addDumperModule");
......@@ -230,7 +222,7 @@ void LldbEngine::setupInferior()
runCommand(cmd);
}
const QString commands = stringSetting(ExtraDumperCommands);
commands = stringSetting(ExtraDumperCommands);
if (!commands.isEmpty()) {
DebuggerCommand cmd("executeDebuggerCommand");
cmd.arg("command", commands);
......@@ -261,7 +253,6 @@ void LldbEngine::setupInferior()
cmd2.arg("processargs", args.toUnixArgs());
if (terminal()) {
QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << state());
const qint64 attachedPID = terminal()->applicationPid();
const qint64 attachedMainThreadID = terminal()->applicationMainThreadId();
const QString msg = (attachedMainThreadID != -1)
......@@ -301,9 +292,9 @@ void LldbEngine::setupInferior()
.arg(bp.id().toString()).arg(bp.state()));
}
}
notifyInferiorSetupOk();
notifyEngineSetupOk();
} else {
notifyInferiorSetupFailed();
notifyEngineSetupFailed();
}
};
......@@ -467,7 +458,7 @@ void LldbEngine::selectThread(ThreadId threadId)
bool LldbEngine::stateAcceptsBreakpointChanges() const
{
switch (state()) {
case InferiorSetupRequested:
case EngineSetupRequested:
case InferiorRunRequested:
case InferiorRunOk:
case InferiorStopRequested:
......@@ -809,10 +800,7 @@ void LldbEngine::readLldbStandardOutput()
break;