diff --git a/IDEHelper/WinDebugger.cpp b/IDEHelper/WinDebugger.cpp index 700935a9..c091e3bd 100644 --- a/IDEHelper/WinDebugger.cpp +++ b/IDEHelper/WinDebugger.cpp @@ -466,8 +466,8 @@ static double ConvertFloat80ToDouble(const byte fp80[10]) addr_target NS_BF_DBG::DecodeTargetDataPtr(const char*& strRef) { - addr_target val = (addr_target)stouln(strRef, sizeof(intptr) * 2); - strRef += sizeof(intptr) * 2; + addr_target val = (addr_target)stouln(strRef, sizeof(intptr_target) * 2); + strRef += sizeof(intptr_target) * 2; return val; } @@ -7699,6 +7699,9 @@ String WinDebugger::DbgTypedValueToString(const DbgTypedValue& origTypedValue, c DbgType* primType = summaryType->mTypeParam; String result; + if (primType->IsInteger()) + formatInfo.mTypeKindFlags = (DbgTypeKindFlags)(formatInfo.mTypeKindFlags | DbgTypeKindFlag_Int); + if ((dataPtr != 0) && (dataPtr != -1)) { String evalString = "(" + primType->ToString() + ")" + ptrDataStr; @@ -7796,6 +7799,9 @@ String WinDebugger::DbgTypedValueToString(const DbgTypedValue& origTypedValue, c result = "???"; } + if (member->mType->IsInteger()) + formatInfo.mTypeKindFlags = (DbgTypeKindFlags)(formatInfo.mTypeKindFlags | DbgTypeKindFlag_Int); + if (formatInfo.mRawString) return result; @@ -9070,7 +9076,12 @@ String WinDebugger::EvaluateContinue(DbgPendingExpr* pendingExpr, BfPassInstance else if (checkType->IsInteger()) val += "\n:type\tint"; else if ((exprResult.mRegNum >= X64Reg_M128_XMM0) && (exprResult.mRegNum <= X64Reg_M128_XMM15)) - val += "\n:type\tmm128"; + val += "\n:type\tmm128"; + else + val += "\n:type\tvaluetype"; + + if ((pendingExpr->mFormatInfo.mTypeKindFlags & DbgTypeKindFlag_Int) != 0) + val += "\n:type\tint"; if (dbgExprEvaluator.mHadSideEffects) val += "\n:sideeffects"; diff --git a/IDEHelper/WinDebugger.h b/IDEHelper/WinDebugger.h index 4a4eaf2f..d3370ff8 100644 --- a/IDEHelper/WinDebugger.h +++ b/IDEHelper/WinDebugger.h @@ -269,6 +269,12 @@ public: } }; +enum DbgTypeKindFlags +{ + DbgTypeKindFlag_None = 0, + DbgTypeKindFlag_Int = 1 +}; + struct DwFormatInfo { int mCallStackIdx; @@ -278,6 +284,7 @@ struct DwFormatInfo bool mNoMembers; bool mRawString; bool mNoEdit; + DbgTypeKindFlags mTypeKindFlags; intptr mArrayLength; intptr mOverrideCount; intptr mMaxCount; @@ -300,6 +307,7 @@ struct DwFormatInfo mNoVisualizers = false; mNoMembers = false; mNoEdit = false; + mTypeKindFlags = DbgTypeKindFlag_None; mArrayLength = -1; mOverrideCount = -1; mMaxCount = -1;