forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -99,6 +99,7 @@ LldbEngine::LldbEngine()
|
|||||||
connect(&ds.useDynamicType, &BaseAspect::changed, this, &LldbEngine::updateLocals);
|
connect(&ds.useDynamicType, &BaseAspect::changed, this, &LldbEngine::updateLocals);
|
||||||
connect(&ds.intelFlavor, &BaseAspect::changed, this, &LldbEngine::updateAll);
|
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::done, this, &LldbEngine::handleLldbDone);
|
||||||
connect(&m_lldbProc, &QtcProcess::readyReadStandardOutput,
|
connect(&m_lldbProc, &QtcProcess::readyReadStandardOutput,
|
||||||
this, &LldbEngine::readLldbStandardOutput);
|
this, &LldbEngine::readLldbStandardOutput);
|
||||||
@@ -230,16 +231,10 @@ void LldbEngine::setupEngine()
|
|||||||
m_lldbProc.setCommand(CommandLine(lldbCmd));
|
m_lldbProc.setCommand(CommandLine(lldbCmd));
|
||||||
|
|
||||||
m_lldbProc.start();
|
m_lldbProc.start();
|
||||||
|
}
|
||||||
|
|
||||||
if (!m_lldbProc.waitForStarted()) {
|
void LldbEngine::handleLldbStarted()
|
||||||
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;
|
|
||||||
}
|
|
||||||
m_lldbProc.waitForReadyRead(1000);
|
m_lldbProc.waitForReadyRead(1000);
|
||||||
|
|
||||||
showStatusMessage(tr("Setting up inferior..."));
|
showStatusMessage(tr("Setting up inferior..."));
|
||||||
@@ -788,6 +783,15 @@ void LldbEngine::doUpdateLocals(const UpdateParameters ¶ms)
|
|||||||
|
|
||||||
void LldbEngine::handleLldbDone()
|
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) {
|
if (m_lldbProc.error() == QProcess::UnknownError) {
|
||||||
notifyDebuggerProcessFinished(m_lldbProc.resultData(), "LLDB");
|
notifyDebuggerProcessFinished(m_lldbProc.resultData(), "LLDB");
|
||||||
return;
|
return;
|
||||||
|
@@ -110,6 +110,7 @@ private:
|
|||||||
QString errorMessage(QProcess::ProcessError error) const;
|
QString errorMessage(QProcess::ProcessError error) const;
|
||||||
bool hasCapability(unsigned cap) const override;
|
bool hasCapability(unsigned cap) const override;
|
||||||
|
|
||||||
|
void handleLldbStarted();
|
||||||
void handleLldbDone();
|
void handleLldbDone();
|
||||||
void readLldbStandardOutput();
|
void readLldbStandardOutput();
|
||||||
void readLldbStandardError();
|
void readLldbStandardError();
|
||||||
|
Reference in New Issue
Block a user