@@ -570,25 +570,20 @@ std::vector<DebuggerInfoEntry> DebuggerInfoTable::getStackInfo(const ViewLocatio
570570 uint64_t stackPointer = m_debugger->StackPointer ();
571571 size_t addressSize = arch->GetAddressSize ();
572572
573- // Add separator entry
574- std::vector<InstructionTextToken> separatorTokens;
575- separatorTokens.emplace_back (TextToken, " --- Stack Contents ---" );
576- result.emplace_back (separatorTokens, 0 , " " , BN_INVALID_EXPR, BN_INVALID_EXPR, 0 );
577-
578573 // Get stack register name for display
579574 auto stackReg = arch->GetStackPointerRegister ();
580575 auto stackRegName = arch->GetRegisterName (stackReg);
581576
582577 // Read stack contents - show values at rsp, rsp+0x8, rsp+0x10, etc.
583578 BinaryReader reader (m_data);
584- for (int i = 0 ; i < 8 ; i++) // Show 8 stack entries
579+ for (int i = 0 ; i < 16 ; i++) // Show 16 stack entries (increased from 8)
585580 {
586581 ptrdiff_t offset = i * addressSize;
587- uint64_t address = stackPointer + offset;
582+ uint64_t stackAddress = stackPointer + offset;
588583
589584 try
590585 {
591- reader.Seek (address );
586+ reader.Seek (stackAddress );
592587 uint64_t value = 0 ;
593588
594589 switch (addressSize)
@@ -640,7 +635,8 @@ std::vector<DebuggerInfoEntry> DebuggerInfoTable::getStackInfo(const ViewLocatio
640635 }
641636 }
642637
643- result.emplace_back (tokens, value, hint, BN_INVALID_EXPR, BN_INVALID_EXPR, address);
638+ // Create stack entry with storage address and stack flag
639+ result.emplace_back (tokens, value, hint, BN_INVALID_EXPR, BN_INVALID_EXPR, stackAddress, stackAddress, true );
644640 }
645641 catch (const std::exception&)
646642 {
@@ -803,6 +799,14 @@ void DebuggerInfoEntryItemDelegate::paint(QPainter *painter, const QStyleOptionV
803799 painter->setPen (getThemeColor (StringColor));
804800 painter->drawText (textRect, QString::fromStdString (entry->hints ));
805801 break ;
802+ case StorageColumn:
803+ if (entry->isStackEntry )
804+ {
805+ painter->setPen (getThemeColor (AddressColor));
806+ painter->drawText (textRect, QString::asprintf (" 0x%llx" , entry->storageAddress ));
807+ }
808+ // Draw nothing for non-stack entries (empty column)
809+ break ;
806810 default :
807811 break ;
808812 }
@@ -866,7 +870,7 @@ int DebuggerInfoEntryItemModel::rowCount(const QModelIndex &parent) const
866870
867871int DebuggerInfoEntryItemModel::columnCount (const QModelIndex &parent) const
868872{
869- return 3 ;
873+ return 4 ; // Added StorageColumn
870874}
871875
872876
@@ -887,6 +891,7 @@ QVariant DebuggerInfoEntryItemModel::data(const QModelIndex &index, int role) co
887891 case ExprColumn:
888892 case ValueColumn:
889893 case HintColumn:
894+ case StorageColumn:
890895 result.setValue (item);
891896 break ;
892897 default :
@@ -915,6 +920,19 @@ QVariant DebuggerInfoEntryItemModel::data(const QModelIndex &index, int role) co
915920 case HintColumn:
916921 result.setValue (item->hints .size ());
917922 break ;
923+ case StorageColumn:
924+ {
925+ if (item->isStackEntry )
926+ {
927+ auto str = QString::asprintf (" 0x%llx" , item->storageAddress );
928+ result.setValue (str.size ());
929+ }
930+ else
931+ {
932+ result.setValue (0 ); // Empty for non-stack entries
933+ }
934+ break ;
935+ }
918936 default :
919937 break ;
920938 }
@@ -948,6 +966,8 @@ QVariant DebuggerInfoEntryItemModel::headerData(int column, Qt::Orientation orie
948966 return " Value" ;
949967 case HintColumn:
950968 return " Hint" ;
969+ case StorageColumn:
970+ return " Storage" ;
951971 }
952972 return QVariant ();
953973}
@@ -999,6 +1019,7 @@ void DebuggerInfoTable::updateColumnWidths()
9991019 resizeColumnToContents (ExprColumn);
10001020 resizeColumnToContents (ValueColumn);
10011021 resizeColumnToContents (HintColumn);
1022+ resizeColumnToContents (StorageColumn);
10021023}
10031024
10041025
0 commit comments