diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index c8abdac08e8..12f5fa01cc5 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -2841,14 +2841,14 @@ void GdbEngine::changeBreakpoint(BreakpointModelId id) QTC_ASSERT(state2 == BreakpointChangeProceeding, qDebug() << state2); QVariant vid = QVariant::fromValue(id); - if (data.threadSpec != response.threadSpec) { + if (!response.pending && data.threadSpec != response.threadSpec) { // The only way to change this seems to be to re-set the bp completely. postCommand("-break-delete " + bpnr, NeedsStop | RebuildBreakpointModel, CB(handleBreakThreadSpec), vid); return; } - if (data.lineNumber != response.lineNumber) { + if (!response.pending && data.lineNumber != response.lineNumber) { // The only way to change this seems to be to re-set the bp completely. postCommand("-break-delete " + bpnr, NeedsStop | RebuildBreakpointModel, diff --git a/src/plugins/debugger/gdb/termgdbadapter.cpp b/src/plugins/debugger/gdb/termgdbadapter.cpp index eed0681d570..a988932660b 100644 --- a/src/plugins/debugger/gdb/termgdbadapter.cpp +++ b/src/plugins/debugger/gdb/termgdbadapter.cpp @@ -123,11 +123,18 @@ void GdbTermEngine::setupInferior() QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << state()); const qint64 attachedPID = m_stubProc.applicationPID(); const qint64 attachedMainThreadID = m_stubProc.applicationMainThreadID(); - const QString msg = (attachedMainThreadID != -1) - ? QString::fromLatin1("Attaching to %1 (%2)").arg(attachedPID).arg(attachedMainThreadID) - : QString::fromLatin1("Attaching to %1").arg(attachedPID); - showMessage(msg, LogMisc); notifyInferiorPid(attachedPID); + const QString msg = (attachedMainThreadID != -1) + ? QString::fromLatin1("Going to attach to %1 (%2)").arg(attachedPID).arg(attachedMainThreadID) + : QString::fromLatin1("Going to attach to %1").arg(attachedPID); + showMessage(msg, LogMisc); + handleInferiorPrepared(); +} + +void GdbTermEngine::runEngine() +{ + QTC_ASSERT(state() == EngineRunRequested, qDebug() << state()); + const qint64 attachedPID = m_stubProc.applicationPID(); postCommand("attach " + QByteArray::number(attachedPID), CB(handleStubAttached)); } @@ -154,28 +161,25 @@ void GdbTermEngine::handleStubAttached(const GdbResponse &response) LogWarning); } } - handleInferiorPrepared(); + notifyEngineRunAndInferiorStopOk(); + continueInferiorInternal(); break; case GdbResultError: if (response.data["msg"].data() == "ptrace: Operation not permitted.") { - notifyInferiorSetupFailed(msgPtraceError(startParameters().startMode)); + showMessage(msgPtraceError(startParameters().startMode)); + notifyEngineRunFailed(); break; } - notifyInferiorSetupFailed(QString::fromLocal8Bit(response.data["msg"].data())); + showMessage(QString::fromLocal8Bit(response.data["msg"].data())); + notifyEngineRunFailed(); break; default: - notifyInferiorSetupFailed(QString::fromLatin1("Invalid response %1").arg(response.resultClass)); + showMessage(QString::fromLatin1("Invalid response %1").arg(response.resultClass)); + notifyEngineRunFailed(); break; } } -void GdbTermEngine::runEngine() -{ - QTC_ASSERT(state() == EngineRunRequested, qDebug() << state()); - notifyEngineRunAndInferiorStopOk(); - continueInferiorInternal(); -} - void GdbTermEngine::interruptInferior2() { interruptLocalInferior(inferiorPid());