userver: userver/logging/stacktrace_cache.hpp Source File
Loading...
Searching...
No Matches
stacktrace_cache.hpp
1#pragma once
2
3#include <string>
4
5#include <boost/stacktrace/stacktrace_fwd.hpp>
6
7USERVER_NAMESPACE_BEGIN
8
9/// Contains functions that cache stacktrace results
10namespace logging::stacktrace_cache {
11
12/// Get cached stacktrace
13/// @see GlobalEnableStacktrace
14std::string to_string(const boost::stacktrace::stacktrace& st);
15
16/// Enable/disable stacktraces. If disabled, stacktrace_cache::to_string()
17/// returns with a const string.
18///
19/// @note Disabling stacktraces is a hack for the Boost.Stacktrace memory leak
20bool GlobalEnableStacktrace(bool enable);
21
22/// RAII-wrapper for `GlobalEnableStacktrace`. Should be used to temporarily
23/// enable stacktraces after `GlobalEnableStacktrace(false)`.
24class StacktraceGuard {
25public:
26 explicit StacktraceGuard(bool enabled);
27
28 ~StacktraceGuard();
29
30private:
31 const bool old_;
32};
33
34} // namespace logging::stacktrace_cache
35
36USERVER_NAMESPACE_END