forked from qt-creator/qt-creator
CdbEngine: Connect to done() signal
Instead of connecting to errorOccurred() and finished() signals. Change-Id: Id5e92fbccd361c7bce7718704f33e221649ab47b Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -211,8 +211,7 @@ CdbEngine::CdbEngine() :
|
|||||||
DebuggerSettings *s = debuggerSettings();
|
DebuggerSettings *s = debuggerSettings();
|
||||||
connect(s->createFullBacktrace.action(), &QAction::triggered,
|
connect(s->createFullBacktrace.action(), &QAction::triggered,
|
||||||
this, &CdbEngine::createFullBacktrace);
|
this, &CdbEngine::createFullBacktrace);
|
||||||
connect(&m_process, &QtcProcess::finished, this, &CdbEngine::processFinished);
|
connect(&m_process, &QtcProcess::done, this, &CdbEngine::processDone);
|
||||||
connect(&m_process, &QtcProcess::errorOccurred, this, &CdbEngine::processError);
|
|
||||||
connect(&m_process, &QtcProcess::readyReadStandardOutput,
|
connect(&m_process, &QtcProcess::readyReadStandardOutput,
|
||||||
this, &CdbEngine::readyReadStandardOut);
|
this, &CdbEngine::readyReadStandardOut);
|
||||||
connect(&m_process, &QtcProcess::readyReadStandardError,
|
connect(&m_process, &QtcProcess::readyReadStandardError,
|
||||||
@@ -354,7 +353,7 @@ void CdbEngine::setupEngine()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cdbIs64Bit = Utils::is64BitWindowsBinary(sp.debugger.command.executable());
|
bool cdbIs64Bit = is64BitWindowsBinary(sp.debugger.command.executable());
|
||||||
if (!cdbIs64Bit)
|
if (!cdbIs64Bit)
|
||||||
m_wow64State = noWow64Stack;
|
m_wow64State = noWow64Stack;
|
||||||
const QFileInfo extensionFi(CdbEngine::extensionLibraryName(cdbIs64Bit));
|
const QFileInfo extensionFi(CdbEngine::extensionLibraryName(cdbIs64Bit));
|
||||||
@@ -702,12 +701,16 @@ void CdbEngine::abortDebuggerProcess()
|
|||||||
m_process.kill();
|
m_process.kill();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CdbEngine::processFinished()
|
void CdbEngine::processDone()
|
||||||
{
|
{
|
||||||
if (debug)
|
if (m_process.error() != QProcess::UnknownError)
|
||||||
|
showMessage(m_process.errorString(), LogError);
|
||||||
|
|
||||||
|
if (debug) {
|
||||||
qDebug("CdbEngine::processFinished %dms '%s' (exit state=%d, ex=%d)",
|
qDebug("CdbEngine::processFinished %dms '%s' (exit state=%d, ex=%d)",
|
||||||
elapsedLogTime(), qPrintable(stateName(state())),
|
elapsedLogTime(), qPrintable(stateName(state())),
|
||||||
m_process.exitStatus(), m_process.exitCode());
|
m_process.exitStatus(), m_process.exitCode());
|
||||||
|
}
|
||||||
|
|
||||||
notifyDebuggerProcessFinished(m_process.resultData(), "CDB");
|
notifyDebuggerProcessFinished(m_process.resultData(), "CDB");
|
||||||
}
|
}
|
||||||
@@ -1039,7 +1042,7 @@ void CdbEngine::runCommand(const DebuggerCommand &dbgCmd)
|
|||||||
QList<QStringView> splittedArguments;
|
QList<QStringView> splittedArguments;
|
||||||
int maxArgumentSize = maxCommandLength - prefix.length() - maxTokenLength;
|
int maxArgumentSize = maxCommandLength - prefix.length() - maxTokenLength;
|
||||||
while (argumentSplitPos < arguments.size()) {
|
while (argumentSplitPos < arguments.size()) {
|
||||||
splittedArguments << Utils::midView(arguments, argumentSplitPos, maxArgumentSize);
|
splittedArguments << midView(arguments, argumentSplitPos, maxArgumentSize);
|
||||||
argumentSplitPos += splittedArguments.last().length();
|
argumentSplitPos += splittedArguments.last().length();
|
||||||
}
|
}
|
||||||
QTC_CHECK(argumentSplitPos == arguments.size());
|
QTC_CHECK(argumentSplitPos == arguments.size());
|
||||||
@@ -2446,11 +2449,6 @@ void CdbEngine::readyReadStandardError()
|
|||||||
showMessage(QString::fromLocal8Bit(m_process.readAllStandardError()), LogError);
|
showMessage(QString::fromLocal8Bit(m_process.readAllStandardError()), LogError);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CdbEngine::processError()
|
|
||||||
{
|
|
||||||
showMessage(m_process.errorString(), LogError);
|
|
||||||
}
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
// Join breakpoint ids for a multi-breakpoint id commands like 'bc', 'be', 'bd'
|
// Join breakpoint ids for a multi-breakpoint id commands like 'bc', 'be', 'bd'
|
||||||
static QByteArray multiBreakpointCommand(const char *cmdC, const Breakpoints &bps)
|
static QByteArray multiBreakpointCommand(const char *cmdC, const Breakpoints &bps)
|
||||||
@@ -2498,14 +2496,14 @@ public:
|
|||||||
const CppEditor::WorkingCopy &workingCopy) :
|
const CppEditor::WorkingCopy &workingCopy) :
|
||||||
m_snapshot(s), m_workingCopy(workingCopy) {}
|
m_snapshot(s), m_workingCopy(workingCopy) {}
|
||||||
|
|
||||||
unsigned fixLineNumber(const Utils::FilePath &filePath, unsigned lineNumber) const;
|
unsigned fixLineNumber(const FilePath &filePath, unsigned lineNumber) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const CPlusPlus::Snapshot m_snapshot;
|
const CPlusPlus::Snapshot m_snapshot;
|
||||||
CppEditor::WorkingCopy m_workingCopy;
|
CppEditor::WorkingCopy m_workingCopy;
|
||||||
};
|
};
|
||||||
|
|
||||||
static CPlusPlus::Document::Ptr getParsedDocument(const Utils::FilePath &filePath,
|
static CPlusPlus::Document::Ptr getParsedDocument(const FilePath &filePath,
|
||||||
const CppEditor::WorkingCopy &workingCopy,
|
const CppEditor::WorkingCopy &workingCopy,
|
||||||
const CPlusPlus::Snapshot &snapshot)
|
const CPlusPlus::Snapshot &snapshot)
|
||||||
{
|
{
|
||||||
@@ -2520,7 +2518,7 @@ static CPlusPlus::Document::Ptr getParsedDocument(const Utils::FilePath &filePat
|
|||||||
return doc;
|
return doc;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned BreakpointCorrectionContext::fixLineNumber(const Utils::FilePath &filePath,
|
unsigned BreakpointCorrectionContext::fixLineNumber(const FilePath &filePath,
|
||||||
unsigned lineNumber) const
|
unsigned lineNumber) const
|
||||||
{
|
{
|
||||||
const CPlusPlus::Document::Ptr doc = getParsedDocument(filePath,
|
const CPlusPlus::Document::Ptr doc = getParsedDocument(filePath,
|
||||||
@@ -2677,7 +2675,7 @@ static StackFrames parseFrames(const GdbMi &gdbmi, bool *incomplete = nullptr)
|
|||||||
frame.level = QString::number(i);
|
frame.level = QString::number(i);
|
||||||
const GdbMi fullName = frameMi["fullname"];
|
const GdbMi fullName = frameMi["fullname"];
|
||||||
if (fullName.isValid()) {
|
if (fullName.isValid()) {
|
||||||
frame.file = Utils::FilePath::fromString(fullName.data()).normalizedPathName();
|
frame.file = FilePath::fromString(fullName.data()).normalizedPathName();
|
||||||
frame.line = frameMi["line"].data().toInt();
|
frame.line = frameMi["line"].data().toInt();
|
||||||
frame.usable = false; // To be decided after source path mapping.
|
frame.usable = false; // To be decided after source path mapping.
|
||||||
const GdbMi languageMi = frameMi["language"];
|
const GdbMi languageMi = frameMi["language"];
|
||||||
|
@@ -106,8 +106,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
void readyReadStandardOut();
|
void readyReadStandardOut();
|
||||||
void readyReadStandardError();
|
void readyReadStandardError();
|
||||||
void processError();
|
void processDone();
|
||||||
void processFinished();
|
|
||||||
void runCommand(const DebuggerCommand &cmd) override;
|
void runCommand(const DebuggerCommand &cmd) override;
|
||||||
void adjustOperateByInstruction(bool);
|
void adjustOperateByInstruction(bool);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user