Added trace::current() methods
This commit is contained in:
parent
a10e27a720
commit
1b0b7a43ea
@ -30,6 +30,7 @@ namespace cpptrace {
|
|||||||
struct raw_trace {
|
struct raw_trace {
|
||||||
std::vector<uintptr_t> frames;
|
std::vector<uintptr_t> frames;
|
||||||
explicit raw_trace(std::vector<uintptr_t>&& frames_) : frames(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 object_trace resolve_object_trace() const;
|
||||||
CPPTRACE_API stacktrace resolve() const;
|
CPPTRACE_API stacktrace resolve() const;
|
||||||
CPPTRACE_API void clear();
|
CPPTRACE_API void clear();
|
||||||
@ -53,6 +54,7 @@ namespace cpptrace {
|
|||||||
struct object_trace {
|
struct object_trace {
|
||||||
std::vector<object_frame> frames;
|
std::vector<object_frame> frames;
|
||||||
explicit object_trace(std::vector<object_frame>&& frames_) : frames(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 stacktrace resolve() const;
|
||||||
CPPTRACE_API void clear();
|
CPPTRACE_API void clear();
|
||||||
CPPTRACE_API bool empty() const noexcept;
|
CPPTRACE_API bool empty() const noexcept;
|
||||||
@ -89,6 +91,7 @@ namespace cpptrace {
|
|||||||
std::vector<stacktrace_frame> frames;
|
std::vector<stacktrace_frame> frames;
|
||||||
explicit stacktrace() {}
|
explicit stacktrace() {}
|
||||||
explicit stacktrace(std::vector<stacktrace_frame>&& frames_) : frames(frames_) {}
|
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() const;
|
||||||
CPPTRACE_API void print(std::ostream& stream) const;
|
CPPTRACE_API void print(std::ostream& stream) const;
|
||||||
CPPTRACE_API void print(std::ostream& stream, bool color) const;
|
CPPTRACE_API void print(std::ostream& stream, bool color) const;
|
||||||
|
|||||||
@ -30,6 +30,11 @@ namespace cpptrace {
|
|||||||
std::atomic_bool absorb_trace_exceptions(true);
|
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
|
CPPTRACE_API
|
||||||
object_trace raw_trace::resolve_object_trace() const {
|
object_trace raw_trace::resolve_object_trace() const {
|
||||||
return object_trace(detail::get_frames_object_info(frames));
|
return object_trace(detail::get_frames_object_info(frames));
|
||||||
@ -54,6 +59,11 @@ namespace cpptrace {
|
|||||||
return frames.empty();
|
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
|
CPPTRACE_API
|
||||||
stacktrace object_trace::resolve() const {
|
stacktrace object_trace::resolve() const {
|
||||||
return stacktrace(detail::resolve_frames(frames));
|
return stacktrace(detail::resolve_frames(frames));
|
||||||
@ -99,6 +109,11 @@ namespace cpptrace {
|
|||||||
return stream;
|
return stream;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CPPTRACE_FORCE_NO_INLINE CPPTRACE_API
|
||||||
|
stacktrace stacktrace::current(std::uint32_t skip) {
|
||||||
|
return generate_trace(skip + 1);
|
||||||
|
}
|
||||||
|
|
||||||
CPPTRACE_API
|
CPPTRACE_API
|
||||||
void stacktrace::print() const {
|
void stacktrace::print() const {
|
||||||
print(std::cerr, true);
|
print(std::cerr, true);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user