Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

Class template basic_stacktrace

boost::stacktrace::basic_stacktrace

Synopsis

// In header: <boost/stacktrace/stacktrace.hpp>

template<typename Allocator> 
class basic_stacktrace {
public:
  // types
  typedef boost::stacktrace::frame, Allocator >::             ;            
  typedef boost::stacktrace::frame, Allocator >::         ;        
  typedef boost::stacktrace::frame, Allocator >::          ;               
  typedef boost::stacktrace::frame, Allocator >::          ;         
  typedef boost::stacktrace::frame, Allocator >::        ;             
  typedef boost::stacktrace::frame, Allocator >::        ;       
  typedef boost::stacktrace::frame, Allocator >::              ;             
  typedef boost::stacktrace::frame, Allocator >::        ;       
  typedef boost::stacktrace::frame, Allocator >::         ;              
  typedef boost::stacktrace::frame, Allocator >::         ;        
  typedef boost::stacktrace::frame, Allocator >:: ;      
  typedef boost::stacktrace::frame, Allocator >:: ;

  // public member functions
  () ;
  (const ) ;
  (, , const  = ) ;
  (const  basic_stacktrace &);
  basic_stacktrace & (const  basic_stacktrace &);
  ~();
  (basic_stacktrace &&) ;
  basic_stacktrace & 
  (basic_stacktrace &&) ;
   () ;
   () ;
   () ;
   () ;
   () ;
   () ;
   () ;
   () ;
   () ;
   () ;
  constexpr () ;
  bool () ;
  const boost::stacktrace::frame, Allocator > & 
  () ;

  // public static functions
  template<typename Char, typename Trait> 
    basic_stacktrace 
    (Char, Trait > &, const  = );
  basic_stacktrace 
  (const  void *, , const  = );
  basic_stacktrace< Allocator > 
  (const  = ) ;
};

Description

Class that on construction copies minimal information about call stack into its internals and provides access to that information.

Template Parameters

  1. typename Allocator

    Allocator to use during stack capture.

basic_stacktrace public member functions

  1. () ;
    Stores the current function call sequence inside *this without any decoding or any other heavy platform specific operations.

    Complexity: O(N) where N is call sequence length, O(1) if BOOST_STACKTRACE_USE_NOOP is defined.

    Async-Handler-Safety: Theoretically async signal safe if Allocator construction, copying, Allocator::allocate and Allocator::deallocate are async signal safe.

  2. (const  a) ;
    Stores the current function call sequence inside *this without any decoding or any other heavy platform specific operations.

    Complexity: O(N) where N is call sequence length, O(1) if BOOST_STACKTRACE_USE_NOOP is defined.

    Async-Handler-Safety: Theoretically async signal safe if Allocator construction, copying, Allocator::allocate and Allocator::deallocate are async signal safe.

    Parameters:

    a

    Allocator that would be passed to underlying storage.

  3. ( skip,  max_depth, 
                     const  a = ) ;
    Stores [skip, skip + max_depth) of the current function call sequence inside *this without any decoding or any other heavy platform specific operations.

    Complexity: O(N) where N is call sequence length, O(1) if BOOST_STACKTRACE_USE_NOOP is defined.

    Async-Handler-Safety: Theoretically async signal safe if Allocator construction, copying, Allocator::allocate and Allocator::deallocate are async signal safe.

    Parameters:

    skip

    How many top calls to skip and do not store in *this.

    max_depth

    Max call sequence depth to collect.

    a

    Allocator that would be passed to underlying storage.

    Throws:

    Nothing. Note that default construction of allocator may throw, however it is performed outside the constructor and exception in allocator_type() would not result in calling std::terminate.
  4. (const  basic_stacktrace & st);

    Complexity: O(st.size())

    Async-Handler-Safety: Theoretically async signal safe if Allocator construction, copying, Allocator::allocate and Allocator::deallocate are async signal safe.

  5. basic_stacktrace & (const  basic_stacktrace & st);

    Complexity: O(st.size())

    Async-Handler-Safety: Theoretically async signal safe if Allocator construction, copying, Allocator::allocate and Allocator::deallocate are async signal safe.

  6. ~();

    Complexity: O(1)

    Async-Handler-Safety: Theoretically async signal safe if Allocator::deallocate is async signal safe.

  7. (basic_stacktrace && st) ;

    Complexity: O(1)

    Async-Handler-Safety: Theoretically async signal safe if Allocator construction and copying are async signal safe.

  8. basic_stacktrace & 
    (basic_stacktrace && st) ;

    Complexity: O(st.size())

    Async-Handler-Safety: Theoretically async signal safe if Allocator construction and copying are async signal safe.

  9.  () ;

    Complexity: O(1)

    Async-Handler-Safety: Theoretically async signal safe .

    Returns:

    Number of function names stored inside the class.

  10.  ( frame_no) ;

    Complexity: O(1).

    Async-Handler-Safety: Theoretically async signal safe .

    Parameters:

    frame_no

    Zero based index of frame to return. 0 is the function index where stacktrace was constructed and index close to this->size() contains function main().

    Returns:

    frame that references the actual frame info, stored inside *this.

  11.  () ;

    Complexity: O(1)

    Async-Handler-Safety: Theoretically async signal safe .

  12.  () ;

    Complexity: O(1)

    Async-Handler-Safety: Theoretically async signal safe .

  13.  () ;

    Complexity: O(1)

    Async-Handler-Safety: Theoretically async signal safe .

  14.  () ;

    Complexity: O(1)

    Async-Handler-Safety: Theoretically async signal safe .

  15.  () ;

    Complexity: O(1)

    Async-Handler-Safety: Theoretically async signal safe .

  16.  () ;

    Complexity: O(1)

    Async-Handler-Safety: Theoretically async signal safe .

  17.  () ;

    Complexity: O(1)

    Async-Handler-Safety: Theoretically async signal safe .

  18.  () ;

    Complexity: O(1)

    Async-Handler-Safety: Theoretically async signal safe .

  19. constexpr () ;
    Allows to check that stack trace capturing was successful.

    Complexity: O(1)

    Async-Handler-Safety: Theoretically async signal safe .

    Returns:

    true if this->size() != 0

  20. bool () ;
    Allows to check that stack trace failed.

    Complexity: O(1)

    Async-Handler-Safety: Theoretically async signal safe .

    Returns:

    true if this->size() == 0

  21. const boost::stacktrace::frame, Allocator > & 
    () ;

basic_stacktrace public static functions

  1. template<typename Char, typename Trait> 
      basic_stacktrace 
      (Char, Trait > & in, 
                const  a = );

    Constructs stacktrace from basic_istreamable that references the dumped stacktrace. Terminating zero frame is discarded.

    Complexity: O(N)

  2. basic_stacktrace 
    (const  void * begin,  buffer_size_in_bytes, 
              const  a = );

    Constructs stacktrace from raw memory dump. Terminating zero frame is discarded.

    Complexity: O(size) in worst case

    Parameters:

    begin

    Beginning of the memory where the stacktrace was saved using the boost::stacktrace::safe_dump_to

    buffer_size_in_bytes

    Size of the memory. Usually the same value that was passed to the boost::stacktrace::safe_dump_to

  3. basic_stacktrace< Allocator > 
    (const  alloc = ) ;

    Returns a basic_stacktrace object containing a stacktrace captured at the point where the currently handled exception was thrown by its initial throw-expression (i.e. not a rethrow), or an empty basic_stacktrace object if:

    • the boost_stacktrace_from_exception library is not linked to the current binary, or

    • the initialization of stacktrace failed, or

    • stacktrace captures are not enabled for the throwing thread, or

    • no exception is being handled, or

    • due to implementation-defined reasons.

    alloc is passed to the constructor of the stacktrace object. Rethrowing an exception using a throw-expression with no operand does not alter the captured stacktrace.

    Implements https://wg21.link/p2370r1


PrevUpHomeNext