xtd - Reference Guide  0.1.1
Modern c++17/20 framework to create console, GUI and unit test applications on Windows, macOS, Linux, iOS and android.
stack_trace.h
Go to the documentation of this file.
1 #pragma once
5 #include <exception>
6 #include <memory>
7 #include <vector>
8 #include "../core_export.h"
9 #include "../object.h"
10 #include "../ustring.h"
11 #include "stack_frame.h"
12 
14 namespace xtd {
16  class system_exception;
18 
20  namespace diagnostics {
32  class core_export_ stack_trace : public object {
33  public:
35  using stack_frame_collection = std::vector<xtd::diagnostics::stack_frame>;
36 
110  explicit stack_trace(bool need_file_info);
126  stack_trace(const std::exception& exception);
131  explicit stack_trace(size_t skip_frames);
138  stack_trace(const std::exception& exception, size_t skip_frames);
176  stack_trace(size_t skip_frames, bool need_file_info);
183  stack_trace(const std::exception& exception, size_t skip_frames, bool need_file_info);
188  stack_trace(const std::exception& exception, bool need_file_info);
190  stack_trace(const stack_trace&) = default;
191  stack_trace& operator=(const stack_trace&) = default;
193 
229  size_t frame_count() const;
230 
269 
286 
296  xtd::ustring to_string() const noexcept;
297 
299  friend std::ostream& operator<<(std::ostream& os, const xtd::diagnostics::stack_trace& stack_trace) noexcept {return os << stack_trace.to_string();}
301 
304  static constexpr size_t METHODS_TO_SKIP = 0;
305 
306  private:
307  friend class xtd::system_exception;
308  stack_trace(const xtd::ustring& str, size_t skip_frames, bool need_file_info);
310 
311  stack_frame_collection frames_;
312  };
313  }
314 }
Provides information about a xtd::diagnostics::stack_frame, which represents a function call on the c...
Definition: stack_frame.h:29
static stack_frame empty() noexcept
Return an empty stack frame.
Represents a stack trace, which is an ordered collection of one or more stack frames.
Definition: stack_trace.h:32
stack_trace(size_t skip_frames, bool need_file_info)
Initializes a new instance of the xtd::diagnostics::stack_trace class from the caller's frame,...
const xtd::diagnostics::stack_frame & get_frame(size_t index)
Gets the specified stack frame.
std::vector< xtd::diagnostics::stack_frame > stack_frame_collection
Represents a stack_frame collection.
Definition: stack_trace.h:35
stack_trace(const std::exception &exception, size_t skip_frames)
Initializes a new instance of the StackTrace class using the provided exception object and skipping t...
stack_trace(const std::exception &exception, bool need_file_info)
Initializes a new instance of the xtd::diagnostics::stack_trace class, using the provided exception o...
const stack_frame_collection & get_frames() const
Returns a copy of all stack frames in the current stack trace.
size_t frame_count() const
Gets the number of frames in the stack trace.
stack_trace(const xtd::diagnostics::stack_frame &frame)
Initializes a new instance of the xtd::diagnostics::stack_trace class that contains a single frame.
stack_trace(const std::exception &exception, size_t skip_frames, bool need_file_info)
Initializes a new instance of the xtd::diagnostics::stack_trace class using the provided exception ob...
stack_trace(size_t skip_frames)
Initializes a new instance of the xtd::diagnostics::stack_trace class from the caller's frame,...
stack_trace(bool need_file_info)
Initializes a new instance of the xtd::diagnostics::stack_trace class from the caller's frame,...
stack_trace(const std::exception &exception)
Initializes a new instance of the xtd::diagnostics::stack_trace class using the provided exception ob...
stack_trace()
Initializes a new instance of the xtd::diagnostics::stack_trace class from the caller's frame.
xtd::ustring to_string() const noexcept
Builds a readable representation of the stack trace.
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition: object.h:26
Defines the base class for predefined exceptions in the xtd namespace.
Definition: system_exception.h:24
virtual xtd::ustring stack_trace() const noexcept
Gets a string representation of the immediate frames on the call stack.
Definition: system_exception.h:126
Represents text as a sequence of UTF-8 code units.
Definition: ustring.h:48
#define core_export_
Define shared library export.
Definition: core_export.h:13
std::string to_string(const value_t &value, const std::string &fmt, const std::locale &loc)
Convert a specified value into a string with specified format and locale.
Definition: to_string.h:37
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition: system_report.h:17
Contains xtd::diagnostics::stack_frame class.