| 203 | } |
| 204 | |
| 205 | QVector<Execution::ResolvedFrame> Execution::resolveAll(const Execution::Trace &trace) |
| 206 | { |
| 207 | QVector<ResolvedFrame> frames; |
| 208 | frames.reserve(trace.size()); |
| 209 | |
| 210 | #ifdef USE_BACKWARD_CPP |
| 211 | auto &st = TracePrivate::get(trace); |
| 212 | resolver()->load_stacktrace(st); |
| 213 | for (int i = 0; i < trace.size(); ++i) |
| 214 | frames.push_back(toResolvedFrame(resolver()->resolve(st[i]), st[i].addr)); |
| 215 | |
| 216 | #elif defined(HAVE_BACKTRACE) |
| 217 | const auto &v = TracePrivate::get(trace); |
| 218 | char **strings = backtrace_symbols(v.data(), v.size()); |
| 219 | for (int i = 0; i < v.size(); ++i) { |
| 220 | ResolvedFrame frame; |
| 221 | frame.name = maybeDemangleName(strings[i]); |
| 222 | frames.push_back(frame); |
| 223 | } |
| 224 | free(strings); |
| 225 | |
| 226 | #endif |
| 227 | return frames; |
| 228 | } |
| 229 | |
| 230 | // END Unix specific code |
| 231 | #else |
nothing calls this directly
no test coverage detected