forked from qt-creator/qt-creator
LldbEngine: Connect to done() signal
Instead of connecting to errorOccurred() and finished() signals. Change-Id: If82a7c79bba9bd3457d07fbc212f6b007699b0f0 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -92,21 +92,14 @@ LldbEngine::LldbEngine()
|
||||
setDebuggerName("LLDB");
|
||||
|
||||
DebuggerSettings &ds = *debuggerSettings();
|
||||
connect(&ds.autoDerefPointers, &BaseAspect::changed,
|
||||
this, &LldbEngine::updateLocals);
|
||||
connect(&ds.autoDerefPointers, &BaseAspect::changed, this, &LldbEngine::updateLocals);
|
||||
connect(ds.createFullBacktrace.action(), &QAction::triggered,
|
||||
this, &LldbEngine::fetchFullBacktrace);
|
||||
connect(&ds.useDebuggingHelpers, &BaseAspect::changed,
|
||||
this, &LldbEngine::updateLocals);
|
||||
connect(&ds.useDynamicType, &BaseAspect::changed,
|
||||
this, &LldbEngine::updateLocals);
|
||||
connect(&ds.intelFlavor, &BaseAspect::changed,
|
||||
this, &LldbEngine::updateAll);
|
||||
connect(&ds.useDebuggingHelpers, &BaseAspect::changed, this, &LldbEngine::updateLocals);
|
||||
connect(&ds.useDynamicType, &BaseAspect::changed, this, &LldbEngine::updateLocals);
|
||||
connect(&ds.intelFlavor, &BaseAspect::changed, this, &LldbEngine::updateAll);
|
||||
|
||||
connect(&m_lldbProc, &QtcProcess::errorOccurred,
|
||||
this, &LldbEngine::handleLldbError);
|
||||
connect(&m_lldbProc, &QtcProcess::finished,
|
||||
this, &LldbEngine::handleLldbFinished);
|
||||
connect(&m_lldbProc, &QtcProcess::done, this, &LldbEngine::handleLldbDone);
|
||||
connect(&m_lldbProc, &QtcProcess::readyReadStandardOutput,
|
||||
this, &LldbEngine::readLldbStandardOutput);
|
||||
connect(&m_lldbProc, &QtcProcess::readyReadStandardError,
|
||||
@@ -116,11 +109,6 @@ LldbEngine::LldbEngine()
|
||||
this, &LldbEngine::handleResponse, Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
LldbEngine::~LldbEngine()
|
||||
{
|
||||
m_lldbProc.disconnect();
|
||||
}
|
||||
|
||||
void LldbEngine::executeDebuggerCommand(const QString &command)
|
||||
{
|
||||
DebuggerCommand cmd("executeDebuggerCommand");
|
||||
@@ -782,12 +770,17 @@ void LldbEngine::doUpdateLocals(const UpdateParameters ¶ms)
|
||||
runCommand(cmd);
|
||||
}
|
||||
|
||||
void LldbEngine::handleLldbError(QProcess::ProcessError error)
|
||||
void LldbEngine::handleLldbDone()
|
||||
{
|
||||
if (m_lldbProc.error() == QProcess::UnknownError) {
|
||||
notifyDebuggerProcessFinished(m_lldbProc.resultData(), "LLDB");
|
||||
return;
|
||||
}
|
||||
|
||||
const QProcess::ProcessError error = m_lldbProc.error();
|
||||
showMessage(QString("LLDB PROCESS ERROR: %1").arg(error));
|
||||
switch (error) {
|
||||
case QProcess::Crashed:
|
||||
m_lldbProc.disconnect();
|
||||
notifyEngineShutdownFinished();
|
||||
break; // will get a processExited() as well
|
||||
// impossible case QProcess::FailedToStart:
|
||||
@@ -796,7 +789,6 @@ void LldbEngine::handleLldbError(QProcess::ProcessError error)
|
||||
case QProcess::Timedout:
|
||||
default:
|
||||
//setState(EngineShutdownRequested, true);
|
||||
m_lldbProc.stop();
|
||||
AsynchronousMessageBox::critical(tr("LLDB I/O Error"), errorMessage(error));
|
||||
break;
|
||||
}
|
||||
@@ -829,11 +821,6 @@ QString LldbEngine::errorMessage(QProcess::ProcessError error) const
|
||||
}
|
||||
}
|
||||
|
||||
void LldbEngine::handleLldbFinished()
|
||||
{
|
||||
notifyDebuggerProcessFinished(m_lldbProc.resultData(), "LLDB");
|
||||
}
|
||||
|
||||
void LldbEngine::readLldbStandardError()
|
||||
{
|
||||
QString err = QString::fromUtf8(m_lldbProc.readAllStandardError());
|
||||
@@ -921,7 +908,7 @@ void LldbEngine::handleStateNotification(const GdbMi &item)
|
||||
void LldbEngine::handleLocationNotification(const GdbMi &reportedLocation)
|
||||
{
|
||||
qulonglong address = reportedLocation["address"].toAddress();
|
||||
Utils::FilePath fileName = FilePath::fromUserInput(reportedLocation["file"].data());
|
||||
FilePath fileName = FilePath::fromUserInput(reportedLocation["file"].data());
|
||||
QString function = reportedLocation["function"].data();
|
||||
int lineNumber = reportedLocation["line"].toInt();
|
||||
Location loc = Location(fileName, lineNumber);
|
||||
|
||||
@@ -53,7 +53,6 @@ class LldbEngine : public CppDebuggerEngine
|
||||
|
||||
public:
|
||||
LldbEngine();
|
||||
~LldbEngine() override;
|
||||
|
||||
signals:
|
||||
void outputReady(const QString &data);
|
||||
@@ -111,8 +110,7 @@ private:
|
||||
QString errorMessage(QProcess::ProcessError error) const;
|
||||
bool hasCapability(unsigned cap) const override;
|
||||
|
||||
void handleLldbFinished();
|
||||
void handleLldbError(QProcess::ProcessError error);
|
||||
void handleLldbDone();
|
||||
void readLldbStandardOutput();
|
||||
void readLldbStandardError();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user