summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@qt.io>2022-06-22 06:36:37 +0200
committerJarek Kobus <jaroslaw.kobus@qt.io>2022-06-22 12:17:42 +0000
commit37a820f67a656a5dd7a3ac0f10cc72c9a7808a5b (patch)
tree58c944bae93cd5b322f2fb6cb32c4f2c9d549e77 /src
parent8066ce8a6f4b61ddf1847a19ed1bc0618ca3809a (diff)
downloadqt-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.cpp22
-rw-r--r--src/plugins/debugger/lldb/lldbengine.h1
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 &params)
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();