#ifdef CPPTRACE_UNWIND_WITH_EXECINFO #include "unwind.hpp" #include "../platform/common.hpp" #include "../platform/utils.hpp" #include #include #include #include namespace cpptrace { namespace detail { CPPTRACE_FORCE_NO_INLINE std::vector capture_frames(size_t skip, size_t max_depth) { skip++; std::vector addrs(std::min(hard_max_frames, skip + max_depth), nullptr); const int n_frames = backtrace(addrs.data(), static_cast(addrs.size())); // thread safe std::vector frames(n_frames - skip, 0); for(int i = skip; i < n_frames; i++) { frames[i - skip] = reinterpret_cast(addrs[i]); } return frames; } } } #endif