123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #pragma once
- #include <library/cpp/yt/memory/range.h>
- namespace NYT::NBacktrace {
- ////////////////////////////////////////////////////////////////////////////////
- using TBacktrace = TRange<const void*>;
- using TBacktraceBuffer = TMutableRange<const void*>;
- //! Obtains a backtrace via a given cursor.
- /*!
- * \param buffer is the buffer where the backtrace is written to
- * \param framesToSkip is the number of top frames to skip
- * \returns the portion of #buffer that has actually been filled
- */
- template <class TCursor>
- TBacktrace GetBacktrace(
- TCursor* cursor,
- TBacktraceBuffer buffer,
- int framesToSkip);
- //! Symbolizes a backtrace invoking a given callback for each frame.
- /*!
- * \param backtrace Backtrace to symbolize
- * \param frameCallback Callback to invoke per each frame
- */
- void SymbolizeBacktrace(
- TBacktrace backtrace,
- const std::function<void(TStringBuf)>& frameCallback);
- //! Symbolizes a backtrace to a string.
- /*!
- * \param backtrace Backtrace to symbolize
- */
- TString SymbolizeBacktrace(TBacktrace backtrace);
- ////////////////////////////////////////////////////////////////////////////////
- } // namespace NYT::NBacktrace
- #define BACKTRACE_INL_H_
- #include "backtrace-inl.h"
- #undef BACKTRACE_INL_H_
|