diff --git a/src/SeerParallelStacksCommon.cpp b/src/SeerParallelStacksCommon.cpp index 1e6af1f..641de81 100644 --- a/src/SeerParallelStacksCommon.cpp +++ b/src/SeerParallelStacksCommon.cpp @@ -43,6 +43,15 @@ const QString& SeerParallelStacksFrame::function () const { return _function; } +QString SeerParallelStacksFrame::functionOrAddr () const { + + if (_function == "??") { + return _addr; + } + + return _function; +} + const QString& SeerParallelStacksFrame::arch () const { return _arch; } diff --git a/src/SeerParallelStacksCommon.h b/src/SeerParallelStacksCommon.h index 294b94f..1f50429 100644 --- a/src/SeerParallelStacksCommon.h +++ b/src/SeerParallelStacksCommon.h @@ -19,6 +19,7 @@ class SeerParallelStacksFrame { int level () const; const QString& addr () const; const QString& function () const; + QString functionOrAddr () const; const QString& arch () const; const QString& from () const; const QString& file () const; diff --git a/src/SeerParallelStacksGraphicsView.cpp b/src/SeerParallelStacksGraphicsView.cpp index a4c3a44..7415fd1 100644 --- a/src/SeerParallelStacksGraphicsView.cpp +++ b/src/SeerParallelStacksGraphicsView.cpp @@ -128,7 +128,7 @@ SeerParallelStacksStackBoxItem::SeerParallelStacksStackBoxItem(const SeerParalle qreal maxTextW = headerW; for (const auto& frame : _stack.frames) { - maxTextW = std::max(maxTextW, (qreal)normFm.horizontalAdvance(frame.function())); + maxTextW = std::max(maxTextW, (qreal)normFm.horizontalAdvance(frame.functionOrAddr())); } _width = maxTextW + 2 * _kPadX; @@ -190,7 +190,7 @@ void SeerParallelStacksStackBoxItem::paint(QPainter* painter, const QStyleOption painter->setPen(colors.frameText); for (const auto& frame : _stack.frames) { - painter->drawText(QRectF(_kPadX, y, innerW, _kRowH), Qt::AlignLeft | Qt::AlignVCenter, frame.function()); + painter->drawText(QRectF(_kPadX, y, innerW, _kRowH), Qt::AlignLeft | Qt::AlignVCenter, frame.functionOrAddr()); y += _kRowH; } @@ -311,7 +311,7 @@ void SeerParallelStacksStackBoxItem::handleShowPopup() { QString frame; if (_stack.frames.size() > 0) { - frame = _stack.frames[0].function(); + frame = _stack.frames[0].functionOrAddr(); } _popup = new SeerParallelStacksPopupTableWidget();