forked from qt-creator/qt-creator
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:
@@ -1274,9 +1274,15 @@ void CdbEngine::showScriptMessages(const QString &message) const
|
|||||||
{
|
{
|
||||||
GdbMi gdmiMessage;
|
GdbMi gdmiMessage;
|
||||||
gdmiMessage.fromString(message);
|
gdmiMessage.fromString(message);
|
||||||
if (!gdmiMessage.isValid())
|
if (gdmiMessage.isValid())
|
||||||
|
showScriptMessages(gdmiMessage);
|
||||||
|
else
|
||||||
showMessage(message, LogMisc);
|
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")
|
if (msg.name() == "bridgemessage")
|
||||||
showMessage(msg["msg"].data(), LogMisc);
|
showMessage(msg["msg"].data(), LogMisc);
|
||||||
else
|
else
|
||||||
@@ -2085,11 +2091,11 @@ void CdbEngine::handleExtensionMessage(char t, int token, const QString &what, c
|
|||||||
if (t == 'R') {
|
if (t == 'R') {
|
||||||
response.resultClass = ResultDone;
|
response.resultClass = ResultDone;
|
||||||
response.data.fromString(message);
|
response.data.fromString(message);
|
||||||
if (!response.data.isValid()) {
|
if (response.data.isValid()) {
|
||||||
|
showScriptMessages(response.data);
|
||||||
|
} else {
|
||||||
response.data.m_data = message;
|
response.data.m_data = message;
|
||||||
response.data.m_type = GdbMi::Tuple;
|
response.data.m_type = GdbMi::Tuple;
|
||||||
} else {
|
|
||||||
showScriptMessages(message);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
response.resultClass = ResultError;
|
response.resultClass = ResultError;
|
||||||
|
@@ -137,6 +137,7 @@ private:
|
|||||||
void postResolveSymbol(const QString &module, const QString &function,
|
void postResolveSymbol(const QString &module, const QString &function,
|
||||||
DisassemblerAgent *agent);
|
DisassemblerAgent *agent);
|
||||||
void showScriptMessages(const QString &message) const;
|
void showScriptMessages(const QString &message) const;
|
||||||
|
void showScriptMessages(const GdbMi &message) const;
|
||||||
void handleInitialSessionIdle();
|
void handleInitialSessionIdle();
|
||||||
// Builtin commands
|
// Builtin commands
|
||||||
void handleStackTrace(const DebuggerResponse &);
|
void handleStackTrace(const DebuggerResponse &);
|
||||||
|
Reference in New Issue
Block a user