aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@qt.io>2022-06-22 06:45:00 +0200
committerJarek Kobus <jaroslaw.kobus@qt.io>2022-06-22 10:20:28 +0000
commit418ce762df54f6146b241b21a7535893defeab68 (patch)
tree127932d702c92a2be9426a8fef1a24a933d2cc19
parent5c5b3cac941673e931bfa4230d0d16fd6197c3d6 (diff)
PdbEngine: Don't call blocking waitForStarted()
Connect to started() signal instead and continue setup in its handler. Handle failed to start case inside done() signal handler. Change-Id: I9878490e8d30cf189c63800db658afae50141ce0 Reviewed-by: hjk <hjk@qt.io>
-rw-r--r--src/plugins/debugger/pdb/pdbengine.cpp21
-rw-r--r--src/plugins/debugger/pdb/pdbengine.h1
2 files changed, 13 insertions, 9 deletions
diff --git a/src/plugins/debugger/pdb/pdbengine.cpp b/src/plugins/debugger/pdb/pdbengine.cpp
index bd34b36cddf..54375baf7f1 100644
--- a/src/plugins/debugger/pdb/pdbengine.cpp
+++ b/src/plugins/debugger/pdb/pdbengine.cpp
@@ -121,7 +121,8 @@ void PdbEngine::setupEngine()
m_interpreter = runParameters().interpreter;
QString bridge = ICore::resourcePath("debugger/pdbbridge.py").toString();
- connect(&m_proc, &QtcProcess::finished, this, &PdbEngine::handlePdbDone);
+ connect(&m_proc, &QtcProcess::started, this, &PdbEngine::handlePdbStarted);
+ connect(&m_proc, &QtcProcess::done, this, &PdbEngine::handlePdbDone);
connect(&m_proc, &QtcProcess::readyReadStandardOutput, this, &PdbEngine::readPdbStandardOutput);
connect(&m_proc, &QtcProcess::readyReadStandardError, this, &PdbEngine::readPdbStandardError);
@@ -138,15 +139,10 @@ void PdbEngine::setupEngine()
m_proc.setEnvironment(runParameters().debugger.environment);
m_proc.setCommand(cmd);
m_proc.start();
+}
- if (!m_proc.waitForStarted()) {
- notifyEngineSetupFailed();
- showMessage("ADAPTER START FAILED");
- ICore::showWarningWithOptions(tr("Adapter start failed"), m_proc.exitMessage());
- notifyEngineSetupFailed();
- return;
- }
-
+void PdbEngine::handlePdbStarted()
+{
notifyEngineSetupOk();
QTC_ASSERT(state() == EngineRunRequested, qDebug() << state());
@@ -416,6 +412,13 @@ QString PdbEngine::errorMessage(QProcess::ProcessError error) const
void PdbEngine::handlePdbDone()
{
+ if (m_proc.result() == ProcessResult::StartFailed) {
+ notifyEngineSetupFailed();
+ showMessage("ADAPTER START FAILED");
+ ICore::showWarningWithOptions(tr("Adapter start failed"), m_proc.exitMessage());
+ return;
+ }
+
const QProcess::ProcessError error = m_proc.error();
if (error != QProcess::UnknownError) {
showMessage("HANDLE PDB ERROR");
diff --git a/src/plugins/debugger/pdb/pdbengine.h b/src/plugins/debugger/pdb/pdbengine.h
index b8edaf5f44a..efde41e2ce9 100644
--- a/src/plugins/debugger/pdb/pdbengine.h
+++ b/src/plugins/debugger/pdb/pdbengine.h
@@ -100,6 +100,7 @@ private:
QString errorMessage(QProcess::ProcessError error) const;
bool hasCapability(unsigned cap) const override;
+ void handlePdbStarted();
void handlePdbDone();
void readPdbStandardOutput();
void readPdbStandardError();