xtd 0.2.0
Loading...
Searching...
No Matches
stack_trace.h
Go to the documentation of this file.
1
4#pragma once
5#include <exception>
6#include <memory>
7#include "../core_export.h"
8#include "../object.h"
9#include "../string.h"
10#include "stack_frame.h"
11
13namespace xtd {
15 class system_exception;
17
19 namespace diagnostics {
41 public:
43
46 using stack_frame_collection = std::vector<xtd::diagnostics::stack_frame>;
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::system_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::empty()) const noexcept;
334
336 };
337 }
338}
Provides information about a xtd::diagnostics::stack_frame, which represents a function call on the c...
Definition stack_frame.h:40
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,...
size_t frame_count() const noexcept
Gets the number of frames in the stack trace.
std::vector< xtd::diagnostics::stack_frame > stack_frame_collection
Represents a stack_frame collection.
Definition stack_trace.h:46
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.
Represents a stack trace, which is an ordered collection of one or more stack frames.
Definition stack_trace.h:40
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition object.h:42
Defines the base class for predefined exceptions in the xtd namespace.
Definition system_exception.h:24
#define core_export_
Define shared library export.
Definition core_export.h:13
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition xtd_about_box.h:10
Contains xtd::diagnostics::stack_frame class.