diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2022-06-22 06:36:37 +0200 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2022-06-22 12:17:42 +0000 |
commit | 37a820f67a656a5dd7a3ac0f10cc72c9a7808a5b (patch) | |
tree | 58c944bae93cd5b322f2fb6cb32c4f2c9d549e77 /src | |
parent | 8066ce8a6f4b61ddf1847a19ed1bc0618ca3809a (diff) | |
download | qt-creator-37a820f67a656a5dd7a3ac0f10cc72c9a7808a5b.tar.gz |
LldbEngine: 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: I2c2eb14bf2948c23bae1e35a7581f52d25ab1dd4
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/debugger/lldb/lldbengine.cpp | 22 | ||||
-rw-r--r-- | src/plugins/debugger/lldb/lldbengine.h | 1 |
2 files changed, 14 insertions, 9 deletions
diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index 62009240f5..40a369049f 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -99,6 +99,7 @@ LldbEngine::LldbEngine() connect(&ds.useDynamicType, &BaseAspect::changed, this, &LldbEngine::updateLocals); connect(&ds.intelFlavor, &BaseAspect::changed, this, &LldbEngine::updateAll); + connect(&m_lldbProc, &QtcProcess::started, this, &LldbEngine::handleLldbStarted); connect(&m_lldbProc, &QtcProcess::done, this, &LldbEngine::handleLldbDone); connect(&m_lldbProc, &QtcProcess::readyReadStandardOutput, this, &LldbEngine::readLldbStandardOutput); @@ -230,16 +231,10 @@ void LldbEngine::setupEngine() m_lldbProc.setCommand(CommandLine(lldbCmd)); m_lldbProc.start(); +} - if (!m_lldbProc.waitForStarted()) { - const QString msg = tr("Unable to start LLDB \"%1\": %2") - .arg(lldbCmd.toUserOutput(), m_lldbProc.errorString()); - notifyEngineSetupFailed(); - showMessage("ADAPTER START FAILED"); - if (!msg.isEmpty()) - ICore::showWarningWithOptions(adapterStartFailed(), msg); - return; - } +void LldbEngine::handleLldbStarted() +{ m_lldbProc.waitForReadyRead(1000); showStatusMessage(tr("Setting up inferior...")); @@ -788,6 +783,15 @@ void LldbEngine::doUpdateLocals(const UpdateParameters ¶ms) void LldbEngine::handleLldbDone() { + if (m_lldbProc.result() == ProcessResult::StartFailed) { + notifyEngineSetupFailed(); + showMessage("ADAPTER START FAILED"); + ICore::showWarningWithOptions(adapterStartFailed(), tr("Unable to start LLDB \"%1\": %2") + .arg(runParameters().debugger.command.executable().toUserOutput(), + m_lldbProc.errorString())); + return; + } + if (m_lldbProc.error() == QProcess::UnknownError) { notifyDebuggerProcessFinished(m_lldbProc.resultData(), "LLDB"); return; diff --git a/src/plugins/debugger/lldb/lldbengine.h b/src/plugins/debugger/lldb/lldbengine.h index 7562eb98e2..5a0f7d6328 100644 --- a/src/plugins/debugger/lldb/lldbengine.h +++ b/src/plugins/debugger/lldb/lldbengine.h @@ -110,6 +110,7 @@ private: QString errorMessage(QProcess::ProcessError error) const; bool hasCapability(unsigned cap) const override; + void handleLldbStarted(); void handleLldbDone(); void readLldbStandardOutput(); void readLldbStandardError(); |