diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 502c96e3eda772e2b35b1e8399c4d79dcbdc922a..965b8385a5a14188c08a279e19609873728fc972 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -615,8 +615,11 @@ void GdbEngine::handleResponse(const QByteArray &buff) void GdbEngine::readGdbStandardError() { QByteArray err = m_gdbProc.readAllStandardError(); + debugMessage(_("UNEXPECTED GDB STDERR: " + err)); if (err == "Undefined command: \"bb\". Try \"help\".\n") return; + if (err.startsWith("BFD: reopening")) + return; qWarning() << "Unexpected gdb stderr:" << err; } @@ -1651,11 +1654,20 @@ void GdbEngine::handleInferiorShutdown(const GdbResponse &response) debugMessage(_("INFERIOR SUCCESSFULLY SHUT DOWN")); setState(InferiorShutDown); } else { - debugMessage(_("INFERIOR SHUTDOWN FAILED")); - setState(InferiorShutdownFailed); - QString msg = m_gdbAdapter->msgInferiorStopFailed( - QString::fromLocal8Bit(response.data.findChild("msg").data())); - showMessageBox(QMessageBox::Critical, tr("Failed to shut down application"), msg); + QByteArray ba = response.data.findChild("msg").data(); + if (ba.contains(": No such file or directory.")) { + // This happens when someone removed the binary behind our back. + // It is not really an error from a user's point of view. + debugMessage(_("INFERIOR SUCCESSFULLY SHUT DOWN")); + debugMessage(_("NOTE: " + ba)); + setState(InferiorShutDown); + } else { + debugMessage(_("INFERIOR SHUTDOWN FAILED")); + setState(InferiorShutdownFailed); + showMessageBox(QMessageBox::Critical, + tr("Failed to shut down application"), + m_gdbAdapter->msgInferiorStopFailed(QString::fromLocal8Bit(ba))); + } } shutdown(); // re-iterate... }