Skip to content

Commit 17e3f67

Browse files
committed
more verbose diagnostic of stack mock
1 parent 5fb717b commit 17e3f67

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

src/stackmock.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,13 @@ class StackMeasurer_c
7373
public:
7474
ATTRIBUTE_NO_SANITIZE_ADDRESS StackSizeTuplet_t MockMeasureStack ()
7575
{
76+
StringBuilder_c sLog;
7677
constexpr int iMeasures = 50;
7778
DWORD uDepth = 0;
7879
BuildMockExprWrapper ( uDepth );
7980
auto uStartingStack = MeasureStack ();
8081
sphLogDebugv( "========= start measure ==============" );
82+
sLog.Sprintf( "height 0, stack %d, deltah %d, deltastack %d", uStartingStack, 0, uStartingStack );
8183
sphLogDebugv( "height 0, stack %d, deltah %d, deltastack %d", uStartingStack, 0, uStartingStack );
8284

8385
DWORD i = 1;
@@ -106,8 +108,9 @@ class StackMeasurer_c
106108
uPreviousStack = uThisStack;
107109
uPreviousDepth = uDepth;
108110
sphLogDebugv( "height %d, stack %d, deltah %d, deltastack %d", uDepth, uThisStack, uDeltaDepth, iDelta );
111+
sLog.Sprintf( "%d: %d: %d: %d", uDepth, uThisStack, uDeltaDepth, iDelta );
109112
++i;
110-
if ( uDeltaDepth==1 )
113+
if ( uDeltaDepth==1 && iDelta>0 )
111114
{
112115
auto iMaxTries = IncValue ( iDelta );
113116
const auto iRestTries = iMeasures - i;
@@ -126,11 +129,18 @@ class StackMeasurer_c
126129

127130
dHistogram.Sort ( Lesser ( [] ( auto l, auto r ) { return l.second>r.second; } ) );
128131
sphLogDebugv( "Performed %d measures out of %d, max depth %d", i, iMeasures, uDepth );
132+
sLog.Sprintf( "Performed %d measures out of %d, max depth %d", i, iMeasures, uDepth );
129133
for ( const auto& pair : dHistogram )
134+
{
130135
sphLogDebugv( "stack frame size %d, frames %d", pair.first, pair.second );
136+
sLog.Sprintf( "stack frame size %d, frames %d", pair.first, pair.second );
137+
}
131138

132139
if ( dHistogram.IsEmpty() )
140+
{
133141
sphWarning ("Something wrong measuring stack. After %d tries, %d depth", i, uDepth );
142+
sphWarning ("log: %s", sLog.cstr());
143+
}
134144

135145
auto iStack = dHistogram.First().first;
136146
assert (iStack>0);

0 commit comments

Comments
 (0)