From bd6e75c1712dcd65786065987a5ef2b4c4222045 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Fri, 29 Apr 2022 00:44:43 +0200 Subject: [PATCH] PdbEngine: Connect to QtcProcess::done() signal Instead of connecting to errorOccurred() and finished() signals. Change-Id: I9fff11875a680240e63db1663299680f885dbdfc Reviewed-by: Reviewed-by: hjk --- src/plugins/debugger/pdb/pdbengine.cpp | 31 +++++++++----------------- src/plugins/debugger/pdb/pdbengine.h | 3 +-- 2 files changed, 11 insertions(+), 23 deletions(-) diff --git a/src/plugins/debugger/pdb/pdbengine.cpp b/src/plugins/debugger/pdb/pdbengine.cpp index 7777ef906db..0d752795d10 100644 --- a/src/plugins/debugger/pdb/pdbengine.cpp +++ b/src/plugins/debugger/pdb/pdbengine.cpp @@ -120,8 +120,7 @@ void PdbEngine::setupEngine() m_interpreter = runParameters().interpreter; QString bridge = ICore::resourcePath("debugger/pdbbridge.py").toString(); - connect(&m_proc, &QtcProcess::errorOccurred, this, &PdbEngine::handlePdbError); - connect(&m_proc, &QtcProcess::finished, this, &PdbEngine::handlePdbFinished); + connect(&m_proc, &QtcProcess::finished, this, &PdbEngine::handlePdbDone); connect(&m_proc, &QtcProcess::readyReadStandardOutput, this, &PdbEngine::readPdbStandardOutput); connect(&m_proc, &QtcProcess::readyReadStandardError, this, &PdbEngine::readPdbStandardError); @@ -387,24 +386,6 @@ void PdbEngine::updateItem(const QString &iname) updateAll(); } -void PdbEngine::handlePdbError(QProcess::ProcessError error) -{ - showMessage("HANDLE PDB ERROR"); - switch (error) { - case QProcess::Crashed: - break; // will get a processExited() as well - // impossible case QProcess::FailedToStart: - case QProcess::ReadError: - case QProcess::WriteError: - case QProcess::Timedout: - default: - //setState(EngineShutdownRequested, true); - m_proc.kill(); - AsynchronousMessageBox::critical(tr("Pdb I/O Error"), errorMessage(error)); - break; - } -} - QString PdbEngine::errorMessage(QProcess::ProcessError error) const { switch (error) { @@ -432,8 +413,16 @@ QString PdbEngine::errorMessage(QProcess::ProcessError error) const } } -void PdbEngine::handlePdbFinished() +void PdbEngine::handlePdbDone() { + const QProcess::ProcessError error = m_proc.error(); + if (error != QProcess::UnknownError) { + showMessage("HANDLE PDB ERROR"); + if (error != QProcess::Crashed) + AsynchronousMessageBox::critical(tr("Pdb I/O Error"), errorMessage(error)); + if (error == QProcess::FailedToStart) + return; + } showMessage(QString("PDB PROCESS FINISHED, status %1, code %2") .arg(m_proc.exitStatus()).arg(m_proc.exitCode())); notifyEngineSpontaneousShutdown(); diff --git a/src/plugins/debugger/pdb/pdbengine.h b/src/plugins/debugger/pdb/pdbengine.h index 87708cf61e8..b8edaf5f44a 100644 --- a/src/plugins/debugger/pdb/pdbengine.h +++ b/src/plugins/debugger/pdb/pdbengine.h @@ -100,8 +100,7 @@ private: QString errorMessage(QProcess::ProcessError error) const; bool hasCapability(unsigned cap) const override; - void handlePdbFinished(); - void handlePdbError(QProcess::ProcessError error); + void handlePdbDone(); void readPdbStandardOutput(); void readPdbStandardError(); void handleOutput2(const QString &data);