diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp index 1739653b3d49333857d194e483e8b431ae70489c..59e9d0e451b739429b7b623fa54b8b839f9fb01d 100644 --- a/src/plugins/debugger/debuggerrunner.cpp +++ b/src/plugins/debugger/debuggerrunner.cpp @@ -179,7 +179,6 @@ void DebuggerRunControl::start() m_manager->setQtDumperLibraryName(m_dumperLibrary); m_manager->setQtDumperLibraryLocations(m_dumperLibraryLocations); m_manager->startNewDebugger(this, m_startParameters); - emit started(); } void DebuggerRunControl::slotAddToOutputWindowInline(const QString &data) diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 466c6f62766da67eb7aae7d38ad06d2faae81bf8..84380f20548620c90832b043bbacc588568bad17 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -269,6 +269,7 @@ void GdbEngine::gdbProcError(QProcess::ProcessError error) "invoked program '%1' is missing, or you may have insufficient " "permissions to invoke the program.") .arg(theDebuggerStringSetting(GdbLocation)); + emitStartFailed(); break; case QProcess::Crashed: kill = false; @@ -746,10 +747,8 @@ void GdbEngine::flushCommand(GdbCommand &cmd) if (cmd.flags & EmbedToken) cmd.command = cmd.command.arg(currentToken()); - m_gdbProc->write(cmd.command.toLatin1() + "\r\n"); - //emit gdbInputAvailable(QString(), " " + currentTime()); - //emit gdbInputAvailable(QString(), "[" + currentTime() + "] " + cmd.command); emit gdbInputAvailable(LogInput, cmd.command); + executeDebuggerCommand(cmd.command); } void GdbEngine::handleResultRecord(const GdbResultRecord &record) @@ -833,12 +832,12 @@ void GdbEngine::handleResultRecord(const GdbResultRecord &record) void GdbEngine::executeDebuggerCommand(const QString &command) { - if (m_gdbProc->state() == QProcess::NotRunning) { - debugMessage(_("NO GDB PROCESS RUNNING, PLAIN CMD IGNORED: ") + command); + if (m_gdbProc->state() != QProcess::Running) { + debugMessage(_("GDB PROCESS NOT RUNNING, PLAIN CMD IGNORED: ") + command); return; } - m_gdbProc->write(command.toLocal8Bit() + "\r\n"); + m_gdbProc->write(command.toLatin1() + "\r\n"); } void GdbEngine::handleTargetCore(const GdbResultRecord &, const QVariant &) @@ -1496,7 +1495,7 @@ void GdbEngine::startDebugger(const QSharedPointer<DebuggerStartParameters> &sp) if (m_gdbProc->state() != QProcess::NotRunning) { debugMessage(_("GDB IS ALREADY RUNNING, STATE: %1").arg(m_gdbProc->state())); m_gdbProc->kill(); - emit startFailed(); + emitStartFailed(); return; } @@ -1527,7 +1526,7 @@ void GdbEngine::startDebugger(const QSharedPointer<DebuggerStartParameters> &sp) if (!m_stubProc.start(m_startParameters.executable, m_startParameters.processArgs)) { // Error message for user is delivered via a signal. - emit startFailed(); + emitStartFailed(); return; } } else { @@ -1535,7 +1534,7 @@ void GdbEngine::startDebugger(const QSharedPointer<DebuggerStartParameters> &sp) QMessageBox::critical(q->mainWindow(), tr("Debugger Startup Failure"), tr("Cannot set up communication with child process: %1") .arg(m_outputCollector.errorString())); - emit startFailed(); + emitStartFailed(); return; } gdbArgs.prepend(_("--tty=") + m_outputCollector.serverName()); @@ -1561,23 +1560,20 @@ void GdbEngine::startDebugger(const QSharedPointer<DebuggerStartParameters> &sp) m_gdbProc->start(loc, gdbArgs); } +void GdbEngine::emitStartFailed() +{ + // QMessageBox::critical(q->mainWindow(), tr("Debugger Startup Failure"), + // tr("Cannot start debugger: %1").arg(m_gdbProc->errorString())); + m_outputCollector.shutdown(); + m_stubProc.blockSignals(true); + m_stubProc.stop(); + m_stubProc.blockSignals(false); + emit startFailed(); +} + void GdbEngine::startDebugger2() { - qDebug() << "STARTUP, PHASE 2"; debugMessage(_("STARTUP, PHASE 2")); -#if 0 - if (!m_gdbProc->waitForStarted()) { - QMessageBox::critical(q->mainWindow(), tr("Debugger Startup Failure"), - tr("Cannot start debugger: %1").arg(m_gdbProc->errorString())); - m_outputCollector.shutdown(); - m_stubProc.blockSignals(true); - m_stubProc.stop(); - m_stubProc.blockSignals(false); - emit startFailed(); - return; - } -#endif - q->showStatusMessage(tr("Gdb Running...")); postCommand(_("show version"), CB(handleShowVersion)); @@ -2027,7 +2023,8 @@ void GdbEngine::sendInsertBreakpoint(int index) } // The argument is simply a C-quoted version of the argument to the // non-MI "break" command, including the "original" quoting it wants. - where = _("\"\\\"") + GdbMi::escapeCString(where) + _("\\\":") + data->lineNumber + _c('"'); + where = _("\"\\\"%1\\\":%2\"") + .arg(GdbMi::escapeCString(where)).arg(data->lineNumber); } else { where = data->funcName; } diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h index 1dbc285a6ee0e9feb5e0eeeebc583d8d5db81d1f..e202ec987a56caa7e8d878b7968bbcc1d85925e4 100644 --- a/src/plugins/debugger/gdb/gdbengine.h +++ b/src/plugins/debugger/gdb/gdbengine.h @@ -250,6 +250,7 @@ private slots: void stubStarted(); void stubError(const QString &msg); void uploadProcError(QProcess::ProcessError error); + void emitStartFailed(); private: int terminationIndex(const QByteArray &buffer, int &length);