xtd 0.2.0
stack_trace.hpp
Go to the documentation of this file.
1
4#pragma once
5#include <exception>
6#include <memory>
7#include "stack_frame.hpp"
8#define __XTD_CORE_INTERNAL__
10#undef __XTD_CORE_INTERNAL__
11
13namespace xtd {
15 class exception;
17
19 namespace diagnostics {
41 public:
43
48
50
125 explicit stack_trace(bool need_file_info);
141 explicit stack_trace(const std::exception& exception);
146 explicit stack_trace(size_t skip_frames);
153 stack_trace(const std::exception& exception, size_t skip_frames);
191 stack_trace(size_t skip_frames, bool need_file_info);
198 stack_trace(const std::exception& exception, size_t skip_frames, bool need_file_info);
203 stack_trace(const std::exception& exception, bool need_file_info);
205 stack_trace(const stack_trace&) = default;
206 stack_trace& operator =(const stack_trace&) = default;
209
211
215 static constexpr size_t METHODS_TO_SKIP = 0;
217
219
256 size_t frame_count() const noexcept;
258
260
299 const xtd::diagnostics::stack_frame& get_frame(size_t index) noexcept;
300
316 const stack_frame_collection& get_frames() const noexcept;
317
327 xtd::string to_string() const noexcept override;
329
330 private:
331 friend class xtd::exception;
332 stack_trace(const xtd::string& str, size_t skip_frames, bool need_file_info);
333 xtd::string to_string(size_t skip_frames, const xtd::diagnostics::stack_frame& stack_frame = xtd::diagnostics::stack_frame::current()) const noexcept;
334
335 struct data;
336 ptr<data> data_;
337 };
338 }
339}
Contains xtd::array definitions.
Provides methods for creating, manipulating, searching, and sorting arrays, thereby serving as the ba...
Definition array.hpp:61
Provides information about a xtd::diagnostics::stack_frame, which represents a function call on the c...
Definition stack_frame.hpp:48
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 stack_frame_collection & get_frames() const noexcept
Returns a copy of all stack frames in the current stack trace.
xtd::string to_string() const noexcept override
Builds a readable representation of the stack trace.
xtd::array< xtd::diagnostics::stack_frame > stack_frame_collection
Represents a stack_frame collection.
Definition stack_trace.hpp:46
static constexpr size_t METHODS_TO_SKIP
Defines the default for the number of methods to omit from the stack trace. This field is constant.
Definition stack_trace.hpp:215
size_t frame_count() const noexcept
Gets the number of frames in the stack trace.
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...
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.
const xtd::diagnostics::stack_frame & get_frame(size_t index) noexcept
Gets the specified stack frame.
Defines the base class for predefined exceptions in the xtd namespace.
Definition exception.hpp:30
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition object.hpp:44
#define core_export_
Define shared library export.
Definition core_export.hpp:13
xtd::sptr< type_t > ptr
The xtd::ptr object is a shared pointer.
Definition ptr.hpp:27
The xtd::diagnostics namespace provides classes that allow you to interact with system processes,...
Definition assert_dialog_result.hpp:10
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition abstract_object.hpp:8
constexpr const_pointer data() const noexcept
Gets direct access to the underlying contiguous storage.
Definition read_only_span.hpp:201
Contains xtd::diagnostics::stack_frame class.