diff --git a/src/libs/qtcreatorcdbext/gdbmihelpers.cpp b/src/libs/qtcreatorcdbext/gdbmihelpers.cpp index 1285ba905de..b6f8d479447 100644 --- a/src/libs/qtcreatorcdbext/gdbmihelpers.cpp +++ b/src/libs/qtcreatorcdbext/gdbmihelpers.cpp @@ -347,7 +347,7 @@ const wchar_t *valueType(ULONG type) case DEBUG_VALUE_INT32: return L"I32"; case DEBUG_VALUE_INT64: - return L"I64"; + return L"I64"; case DEBUG_VALUE_FLOAT32: return L"F32"; case DEBUG_VALUE_FLOAT64: @@ -509,6 +509,8 @@ Registers getRegisters(CIDebugRegisters *regs, reg.description = registerDescription(description); reg.subRegister = isSubRegister; reg.value = value; + reg.size = valueSize(description.Type); + reg.type = valueType(description.Type); rc.push_back(reg); } } @@ -527,6 +529,7 @@ Registers getRegisters(CIDebugRegisters *regs, reg.name = buf; reg.description = valueType(type); reg.size = valueSize(type); + reg.type = valueType(type); reg.value = value; rc.push_back(reg); } @@ -557,7 +560,8 @@ std::string gdbmiRegisters(CIDebugRegisters *regs, const Register ® = registers.at(r); if (r) str << ','; - str << "{number=\"" << r << "\",name=\"" << gdbmiWStringFormat(reg.name) << '"'; + str << "{number=\"" << r << "\",name=\"" << gdbmiWStringFormat(reg.name) + << "\",size=\"" << reg.size << "\",type=\"" << gdbmiWStringFormat(reg.type) << '"'; if (!reg.description.empty()) str << ",description=\"" << gdbmiWStringFormat(reg.description) << '"'; if (reg.subRegister) diff --git a/src/libs/qtcreatorcdbext/gdbmihelpers.h b/src/libs/qtcreatorcdbext/gdbmihelpers.h index 4ca96eb9dfc..c4af590bfe9 100644 --- a/src/libs/qtcreatorcdbext/gdbmihelpers.h +++ b/src/libs/qtcreatorcdbext/gdbmihelpers.h @@ -129,6 +129,7 @@ struct Register std::wstring name; std::wstring description; + std::wstring type; int size; bool subRegister; bool pseudoRegister; diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index f39c506efab..a9bbaafd861 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -1669,6 +1669,14 @@ void CdbEngine::handleRegistersExt(const DebuggerResponse &response) reg.name = item["name"].data(); reg.description = item["description"].data(); reg.reportedType = item["type"].data(); + if (reg.reportedType.startsWith('I')) + reg.kind = IntegerRegister; + else if (reg.reportedType.startsWith('F')) + reg.kind = FloatRegister; + else if (reg.reportedType.startsWith('V')) + reg.kind = VectorRegister; + else + reg.kind = OtherRegister; reg.value.fromByteArray(item["value"].data(), HexadecimalFormat); reg.size = item["size"].data().toInt(); handler->updateRegister(reg);