33 #if defined(HAVE_LIBDW)
34 # ifndef BACKWARD_HAS_DW
35 # define BACKWARD_HAS_DW 1
37 #elif defined(HAVE_LIBUNWIND)
38 # define BACKWARD_HAS_UNWIND 1
41 #include <backward.hpp>
42 #if defined(HAVE_CXA_DEMANGLE)
49 #define CAN_HONOR_SIGNAL_HANDLING_CONFIGURATION 1
51 #if defined(USE_LIBBACKWARD_SIG_HANDLING)
52 # define TRACE_SIGNALS_BY_DEFAULT true
54 # define TRACE_SIGNALS_BY_DEFAULT false
59 0, DEBUG_TRACE_FATAL_SIGNALS);
95 backward::TraceResolver resolver;
96 resolver.load_stacktrace(
m_Stack);
97 for (
size_t trace_idx = 0; trace_idx <
m_Stack.size(); ++trace_idx) {
99 const backward::ResolvedTrace&
trace
100 = resolver.resolve(
m_Stack[trace_idx]);
104 if (!
trace.source.filename.size()) {
114 for (
size_t inliner_idx = 0; inliner_idx <
trace.inliners.size(); ++inliner_idx) {
115 const backward::ResolvedTrace::SourceLoc& inliner_loc =
trace.inliners[inliner_idx];
117 info2.
file = inliner_loc.filename;
118 info2.
line = inliner_loc.line;
119 info2.
func = inliner_loc.function;
120 stack.push_back(std::move(info2));
123 if (
trace.source.filename.size()) {
130 stack.push_back(std::move(
info));
136 if (TTraceFatalSignals::GetDefault()) {
backward::StackTrace TStack
void Expand(CStackTrace::TStack &stack)
static void s_HonorSignalHandlingConfiguration(void)
list< SStackFrameInfo > TStack
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
typedef NCBI_PARAM_TYPE(Debug, Trace_Fatal_Signals) TTraceFatalSignals
#define TRACE_SIGNALS_BY_DEFAULT
NCBI_PARAM_DEF_EX(bool, Debug, Trace_Fatal_Signals, false, 0, DEBUG_TRACE_FATAL_SIGNALS)
unique_ptr< backward::SignalHandling > s_SignalHandler
NCBI_PARAM_DECL(bool, Debug, Trace_Fatal_Signals)
Front end for a platform-specific configuration summary.
Structure for holding stack trace data.