- enhancement: By default, use monospaced font to display register values in the CPU Info dialog.
- fix: Negative values in register like AH/AL are wrongs displayed as 32/64-bit number.
This commit is contained in:
parent
8584380587
commit
f834a6dfbf
2
NEWS.md
2
NEWS.md
|
@ -105,6 +105,8 @@ Red Panda C++ Version 2.27
|
||||||
- fix: Compile info for project doesn't have name of the project executable.
|
- fix: Compile info for project doesn't have name of the project executable.
|
||||||
- enhancement: Highlight words in the string/comments.
|
- enhancement: Highlight words in the string/comments.
|
||||||
- fix: If there are only 1 line in the editor, shift+down can't select it.
|
- fix: If there are only 1 line in the editor, shift+down can't select it.
|
||||||
|
- enhancement: By default, use monospaced font to display register values in the CPU Info dialog.
|
||||||
|
- fix: Negative values in register like AH/AL are wrongs displayed as 32/64-bit number.
|
||||||
|
|
||||||
Red Panda C++ Version 2.26
|
Red Panda C++ Version 2.26
|
||||||
- enhancement: Code suggestion for embedded std::vectors.
|
- enhancement: Code suggestion for embedded std::vectors.
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
#include <QJsonArray>
|
#include <QJsonArray>
|
||||||
#include <QJsonObject>
|
#include <QJsonObject>
|
||||||
#include "widgets/signalmessagedialog.h"
|
#include "widgets/signalmessagedialog.h"
|
||||||
|
#include <QApplication>
|
||||||
|
|
||||||
Debugger::Debugger(QObject *parent) : QObject(parent),
|
Debugger::Debugger(QObject *parent) : QObject(parent),
|
||||||
mForceUTF8(false),
|
mForceUTF8(false),
|
||||||
|
@ -2219,6 +2220,8 @@ QVariant RegisterModel::data(const QModelIndex &index, int role) const
|
||||||
,"");
|
,"");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case Qt::FontRole:
|
||||||
|
return QFont{pSettings->debugger().fontName(),pSettings->debugger().fontSize()};
|
||||||
case Qt::ToolTipRole:
|
case Qt::ToolTipRole:
|
||||||
switch (index.column()) {
|
switch (index.column()) {
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -2265,7 +2268,9 @@ void RegisterModel::updateNames(const QStringList ®Names)
|
||||||
|
|
||||||
void RegisterModel::updateValues(const QHash<int, QString> registerValues)
|
void RegisterModel::updateValues(const QHash<int, QString> registerValues)
|
||||||
{
|
{
|
||||||
mRegisterValues= registerValues;
|
foreach(int row, registerValues.keys()){
|
||||||
|
mRegisterValues[row] = registerValues[row];
|
||||||
|
}
|
||||||
emit dataChanged(createIndex(0,1),
|
emit dataChanged(createIndex(0,1),
|
||||||
createIndex(mRegisterNames.count()-1,1));
|
createIndex(mRegisterNames.count()-1,1));
|
||||||
}
|
}
|
||||||
|
|
|
@ -471,20 +471,26 @@ void GDBMIDebuggerClient::handleRegisterNames(const QList<GDBMIResultParser::Par
|
||||||
emit registerNamesUpdated(nameList);
|
emit registerNamesUpdated(nameList);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GDBMIDebuggerClient::handleRegisterValue(const QList<GDBMIResultParser::ParseValue> &values)
|
void GDBMIDebuggerClient::handleRegisterValue(const QList<GDBMIResultParser::ParseValue> &values, bool hexValue)
|
||||||
{
|
{
|
||||||
QHash<int,QString> result;
|
QHash<int,QString> result;
|
||||||
foreach (const GDBMIResultParser::ParseValue& val, values) {
|
foreach (const GDBMIResultParser::ParseValue& val, values) {
|
||||||
GDBMIResultParser::ParseObject obj = val.object();
|
GDBMIResultParser::ParseObject obj = val.object();
|
||||||
int number = obj["number"].intValue();
|
int number = obj["number"].intValue();
|
||||||
QString value = obj["value"].value();
|
QString value = obj["value"].value();
|
||||||
bool ok;
|
if (hexValue) {
|
||||||
long long intVal;
|
bool ok;
|
||||||
intVal = value.toLongLong(&ok,10);
|
long long intVal;
|
||||||
if (ok) {
|
intVal = value.toLongLong(&ok,16);
|
||||||
value = QString("0x%1").arg(intVal,0,16);
|
if (ok)
|
||||||
|
result.insert(number,value);
|
||||||
|
} else {
|
||||||
|
bool ok;
|
||||||
|
long long intVal;
|
||||||
|
intVal = value.toLongLong(&ok,10);
|
||||||
|
if (!ok)
|
||||||
|
result.insert(number,value);
|
||||||
}
|
}
|
||||||
result.insert(number,value);
|
|
||||||
}
|
}
|
||||||
emit registerValuesUpdated(result);
|
emit registerValuesUpdated(result);
|
||||||
}
|
}
|
||||||
|
@ -712,7 +718,7 @@ void GDBMIDebuggerClient::processResult(const QByteArray &result)
|
||||||
handleRegisterNames(multiValues["register-names"].array());
|
handleRegisterNames(multiValues["register-names"].array());
|
||||||
break;
|
break;
|
||||||
case GDBMIResultType::RegisterValues:
|
case GDBMIResultType::RegisterValues:
|
||||||
handleRegisterValue(multiValues["register-values"].array());
|
handleRegisterValue(multiValues["register-values"].array(), mCurrentCmd->params=="x");
|
||||||
break;
|
break;
|
||||||
case GDBMIResultType::CreateVar:
|
case GDBMIResultType::CreateVar:
|
||||||
handleCreateVar(multiValues);
|
handleCreateVar(multiValues);
|
||||||
|
@ -1207,6 +1213,7 @@ void GDBMIDebuggerClient::refreshFrame()
|
||||||
void GDBMIDebuggerClient::refreshRegisters()
|
void GDBMIDebuggerClient::refreshRegisters()
|
||||||
{
|
{
|
||||||
postCommand("-data-list-register-names","");
|
postCommand("-data-list-register-names","");
|
||||||
|
postCommand("-data-list-register-values", "x");
|
||||||
postCommand("-data-list-register-values", "N");
|
postCommand("-data-list-register-values", "N");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -105,7 +105,7 @@ private:
|
||||||
void handleMemory(const QList<GDBMIResultParser::ParseValue> & rows);
|
void handleMemory(const QList<GDBMIResultParser::ParseValue> & rows);
|
||||||
void handleMemoryBytes(const QList<GDBMIResultParser::ParseValue> & rows);
|
void handleMemoryBytes(const QList<GDBMIResultParser::ParseValue> & rows);
|
||||||
void handleRegisterNames(const QList<GDBMIResultParser::ParseValue> & names);
|
void handleRegisterNames(const QList<GDBMIResultParser::ParseValue> & names);
|
||||||
void handleRegisterValue(const QList<GDBMIResultParser::ParseValue> & values);
|
void handleRegisterValue(const QList<GDBMIResultParser::ParseValue> & values, bool hexValue);
|
||||||
void handleListVarChildren(const GDBMIResultParser::ParseObject& multiVars);
|
void handleListVarChildren(const GDBMIResultParser::ParseObject& multiVars);
|
||||||
void handleUpdateVarValue(const QList<GDBMIResultParser::ParseValue> &changes);
|
void handleUpdateVarValue(const QList<GDBMIResultParser::ParseValue> &changes);
|
||||||
void handleDisassembly(const QList<GDBMIResultParser::ParseValue> &instructions);
|
void handleDisassembly(const QList<GDBMIResultParser::ParseValue> &instructions);
|
||||||
|
|
Loading…
Reference in New Issue