MCPcopy Create free account
hub / github.com/KDAB/GammaRay / stackTrace

Method stackTrace

core/execution.cpp:97–120  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

95}
96
97Execution::Trace Execution::stackTrace(int maxDepth, int skip)
98{
99 Trace t;
100 auto &data = TracePrivate::get(t);
101#ifdef USE_BACKWARD_CPP
102 data.load_here(maxDepth);
103 // skip 3: 2 calls in backward-cpp, plus this method
104 // however, don't skip more frames than we actually got, as that confuses backward-cpp massively
105 // (this can happen in release builds on ARM apparently)
106 data.skip_n_firsts(std::min(data.size(), skip + data.skip_n_firsts() + 3));
107#elif defined(HAVE_BACKTRACE)
108 data.resize(maxDepth);
109 const auto size = backtrace(data.data(), maxDepth);
110 if (size <= 0)
111 data.clear();
112 else
113 data.resize(size);
114 data.remove(0, skip + 1); // skip 1: this method
115#else
116 Q_UNUSED(maxDepth);
117 Q_UNUSED(skip);
118#endif
119 return t;
120}
121
122#ifdef USE_BACKWARD_CPP
123static backward::TraceResolver *resolver()

Callers 1

repaintMethod · 0.45

Calls 7

load_hereMethod · 0.45
skip_n_firstsMethod · 0.45
sizeMethod · 0.45
resizeMethod · 0.45
dataMethod · 0.45
clearMethod · 0.45
removeMethod · 0.45

Tested by

no test coverage detected