= C++教科書/標準ライブラリ編/<stacktrace>の章
C++ 標準ライブラリ ヘッダー <stacktrace>
解説
編集
19.6 スタックトレース
編集この節では、C++ プログラムが現在のスレッドの実行のスタックトレースを格納し、実行時に格納されたスタックトレースに関する情報を照会するために使用できるコンポーネントについて説明します。
- 19.6.1 一般 このサブ節では、スタックトレースの概念と、C++ 標準ライブラリが提供するスタックトレース関連機能の概要を説明します。
- スタックトレース は、プログラム実行時の関数呼び出し履歴を記録したものです。デバッグやエラー処理において、問題発生箇所を特定するために役立ちます。
- C++ 標準ライブラリは、
stacktrace_entry
クラスとbasic_stacktrace
クラステンプレートを提供し、スタックトレースの取得、操作、比較などを可能にします。
- 19.6.2 ヘッダー
<stacktrace>
シノプシス このサブ節では、ヘッダー<stacktrace>
に含まれる関数と型宣言を一覧します。stacktrace_entry
クラス は、スタックトレースエントリを表します。スタックトレースエントリは、関数呼び出しに関する情報を格納します。basic_stacktrace
クラステンプレート は、スタックトレースを表します。スタックトレースは、複数のスタックトレースエントリで構成されます。- ヘッダー
<stacktrace>
には、スタックトレースの取得、操作、比較、フォーマット化、ハッシュ化のための関数と型宣言が含まれています。
- 19.6.3 クラス
stacktrace_entry
このサブ節では、stacktrace_entry
クラスのメンバー関数を説明します。- コンストラクタ
stacktrace_entry()
:空のスタックトレースエントリを作成します。stacktrace_entry(const stacktrace_entry& other)
:別のスタックトレースエントリをコピーして新しいスタックトレースエントリを作成します。~stacktrace_entry()
:スタックトレースエントリのデストラクタです。
- オブザーバ
native_handle()
:スタックトレースエントリのネイティブハンドルを取得します。operator bool()
:スタックトレースエントリが空かどうかを判定します。
- 照会
description()
:スタックトレースエントリの説明を取得します。source_file()
:スタックトレースエントリのソースファイル名を取得します。source_line()
:スタックトレースエントリのソースコード行番号を取得します。
- 比較
operator==
:2 つのスタックトレースエントリが等しいかどうかを判定します。operator<=>
:2 つのスタックトレースエントリを比較します。
- コンストラクタ
- 19.6.4 クラステンプレート
basic_stacktrace
このサブ節では、basic_stacktrace
クラステンプレートのメンバー関数を説明します。- コンストラクタ
basic_stacktrace()
:空のスタックトレースを作成します。basic_stacktrace(const allocator_type& alloc)
:指定されたアロケータを使用して空のスタックトレースを作成します。basic_stacktrace(const basic_stacktrace& other)
:別のスタックトレースをコピーして新しいスタックトレースを作成します。basic_stacktrace(basic_stacktrace&& other)
:別のスタックトレースを移動して新しいスタックトレースを作成します。basic_stacktrace(const basic_stacktrace& other, const allocator_type& alloc)
:別のスタックトレースをコピーして新しいスタックトレースを作成し、アロケータを指定します。basic_stacktrace(basic_stacktrace&& other, const allocator_type& alloc)
:別のスタックトレースを移動して新しいスタックトレースを作成し、アロケータを指定します。
- 代入演算子
operator=
:別のスタックトレースをコピーして代入します。operator=
:別のスタックトレースを移動して代入します。
- デストラクタ
~basic_stacktrace()
:スタックトレースのデストラクタ。
- オブザーバ
get_allocator()
:スタックトレースで使用されているアロケータを取得します。begin()
:スタックトレースの先頭イテレータを取得します。cbegin()
:const スタックトレースの先頭イテレータを取得します。end()
:スタックトレースの終端イテレータを取得します。cend()
:const スタックトレースの終端イテレータを取得します。rbegin()
:スタックトレースの逆イテレータの先頭を取得します。crbegin()
:const スタックトレースの逆イテレータの先頭を取得します。rend()
:スタックトレースの逆イテレータの終端を取得します。crend()
:const スタックトレースの逆イテレータの終端を取得します。empty()
:スタックトレースが空かどうかを判定します。size()
:スタックトレースに含まれるスタックトレースエントリの数を取得します。max_size()
:スタックトレースが最大で格納できるスタックトレースエントリの数を取得します。operator[]
:指定されたインデックスのスタックトレースエントリを取得します。at()
:指定されたインデックスのスタックトレースエントリを取得します。
- 比較
operator==
:2 つのスタックトレースが等しいかどうかを判定します。operator<=>
:2 つのスタックトレースを比較します。
- 修飾子
swap()
:別のスタックトレースと内容を交換します。
- コンストラクタ
- 19.6.4.6 非メンバ関数 このサブ節では、ヘッダー
<stacktrace>
に含まれる非メンバ関数を説明します。swap()
:2 つのbasic_stacktrace
オブジェクトの内容を交換します。to_string()
:stacktrace_entry
オブジェクトまたはbasic_stacktrace
オブジェクトを文字列に変換します。operator<<
:stacktrace_entry
オブジェクトまたはbasic_stacktrace
オブジェクトをストリームに出力します。
- 19.6.4.7 フォーマットサポート このサブ節では、
stacktrace_entry
オブジェクトとbasic_stacktrace
オブジェクトのフォーマット化をサポートするための型テンプレートを説明します。formatter<stacktrace_entry>
:stacktrace_entry
オブジェクトのフォーマット化をサポートします。formatter<basic_stacktrace>
:basic_stacktrace
オブジェクトのフォーマット化をサポートします。
- 19.6.4.8 ハッシュサポート このサブ節では、
stacktrace_entry
オブジェクトとbasic_stacktrace
オブジェクトのハッシュ化をサポートするための型テンプレートを説明します。hash<stacktrace_entry>
:stacktrace_entry
オブジェクトのハッシュ値を計算します。hash<basic_stacktrace>
:basic_stacktrace
オブジェクトのハッシュ値を計算します。
注意事項
編集- この解説は、C++ 標準ライブラリ ヘッダー
<stacktrace>
の概要を説明したものです。詳細については、C++ 標準ライブラリの公式ドキュメントを参照してください。 - C++ 標準ライブラリ
<stacktrace>
は C++20 以降で使用できます。