Debugger: optimize logging script messages

Avoid parsing the gdbmi output twice just for printing out messages to
the debugger log.

Change-Id: I928fc3a7d55c318056afff09cfbc25d115932bc0
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2023-02-24 09:25:15 +01:00
parent 4de07bf444
commit efe5735452
2 changed files with 12 additions and 5 deletions

View File

@@ -1274,9 +1274,15 @@ void CdbEngine::showScriptMessages(const QString &message) const
{
GdbMi gdmiMessage;
gdmiMessage.fromString(message);
if (!gdmiMessage.isValid())
if (gdmiMessage.isValid())
showScriptMessages(gdmiMessage);
else
showMessage(message, LogMisc);
for (const GdbMi &msg : gdmiMessage["msg"]) {
}
void CdbEngine::showScriptMessages(const GdbMi &message) const
{
for (const GdbMi &msg : message["msg"]) {
if (msg.name() == "bridgemessage")
showMessage(msg["msg"].data(), LogMisc);
else
@@ -2085,11 +2091,11 @@ void CdbEngine::handleExtensionMessage(char t, int token, const QString &what, c
if (t == 'R') {
response.resultClass = ResultDone;
response.data.fromString(message);
if (!response.data.isValid()) {
if (response.data.isValid()) {
showScriptMessages(response.data);
} else {
response.data.m_data = message;
response.data.m_type = GdbMi::Tuple;
} else {
showScriptMessages(message);
}
} else {
response.resultClass = ResultError;

View File

@@ -137,6 +137,7 @@ private:
void postResolveSymbol(const QString &module, const QString &function,
DisassemblerAgent *agent);
void showScriptMessages(const QString &message) const;
void showScriptMessages(const GdbMi &message) const;
void handleInitialSessionIdle();
// Builtin commands
void handleStackTrace(const DebuggerResponse &);