C++/標準ライブラリ/stacktrace
表示
= 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 以降で使用できます。