userver: userver/logging/stacktrace_cache.hpp Source File
⚠️ This is the documentation for an old userver version. Click here to switch to the latest version.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
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 {
25 public:
26 explicit StacktraceGuard(bool enabled);
27
28 ~StacktraceGuard();
29
30 private:
31 const bool old_;
32};
33
34} // namespace logging::stacktrace_cache
35
36USERVER_NAMESPACE_END