Added trace::current() methods

This commit is contained in:
Jeremy 2023-09-21 21:45:01 -04:00
parent a10e27a720
commit 1b0b7a43ea
No known key found for this signature in database
GPG Key ID: 19AA8270105E8EB4
2 changed files with 18 additions and 0 deletions

View File

@ -30,6 +30,7 @@ namespace cpptrace {
struct raw_trace {
std::vector<uintptr_t> frames;
explicit raw_trace(std::vector<uintptr_t>&& frames_) : frames(frames_) {}
CPPTRACE_API static raw_trace current(std::uint32_t skip = 0);
CPPTRACE_API object_trace resolve_object_trace() const;
CPPTRACE_API stacktrace resolve() const;
CPPTRACE_API void clear();
@ -53,6 +54,7 @@ namespace cpptrace {
struct object_trace {
std::vector<object_frame> frames;
explicit object_trace(std::vector<object_frame>&& frames_) : frames(frames_) {}
CPPTRACE_API static object_trace current(std::uint32_t skip = 0);
CPPTRACE_API stacktrace resolve() const;
CPPTRACE_API void clear();
CPPTRACE_API bool empty() const noexcept;
@ -89,6 +91,7 @@ namespace cpptrace {
std::vector<stacktrace_frame> frames;
explicit stacktrace() {}
explicit stacktrace(std::vector<stacktrace_frame>&& frames_) : frames(frames_) {}
CPPTRACE_API static stacktrace current(std::uint32_t skip = 0);
CPPTRACE_API void print() const;
CPPTRACE_API void print(std::ostream& stream) const;
CPPTRACE_API void print(std::ostream& stream, bool color) const;

View File

@ -30,6 +30,11 @@ namespace cpptrace {
std::atomic_bool absorb_trace_exceptions(true);
}
CPPTRACE_FORCE_NO_INLINE CPPTRACE_API
raw_trace raw_trace::current(std::uint32_t skip) {
return generate_raw_trace(skip + 1);
}
CPPTRACE_API
object_trace raw_trace::resolve_object_trace() const {
return object_trace(detail::get_frames_object_info(frames));
@ -54,6 +59,11 @@ namespace cpptrace {
return frames.empty();
}
CPPTRACE_FORCE_NO_INLINE CPPTRACE_API
object_trace object_trace::current(std::uint32_t skip) {
return generate_object_trace(skip + 1);
}
CPPTRACE_API
stacktrace object_trace::resolve() const {
return stacktrace(detail::resolve_frames(frames));
@ -99,6 +109,11 @@ namespace cpptrace {
return stream;
}
CPPTRACE_FORCE_NO_INLINE CPPTRACE_API
stacktrace stacktrace::current(std::uint32_t skip) {
return generate_trace(skip + 1);
}
CPPTRACE_API
void stacktrace::print() const {
print(std::cerr, true);