std:: basic_stacktrace
|
ヘッダー
<stacktrace>
で定義
|
||
|
template
<
class
Allocator
>
class basic_stacktrace ; |
(1) | (C++23以降) |
|
using
stacktrace
=
std :: basic_stacktrace < std:: allocator < std:: stacktrace_entry >> ; |
(2) | (C++23以降) |
|
namespace
pmr
{
using
stacktrace
=
|
(3) | (C++23以降) |
basic_stacktrace
クラステンプレートは、スタックトレース全体またはその一部のスナップショットを表します。これは
AllocatorAwareContainer
、
SequenceContainer
、および
ReversibleContainer
の要件を満たしますが、移動、代入、swap、およびconst修飾されたシーケンスコンテナの操作のみがサポートされ、比較関数のセマンティクスはコンテナに要求されるものとは異なります。
現在の評価 x 0 の 呼び出しシーケンス は、現在の実行スレッドにおける評価のシーケンス (x 0 , ..., x n ) であり、 i≥0 に対して、 x i は関数呼び出し x i+1 内に存在する。
stacktrace は、呼び出しシーケンスの近似表現であり、スタックトレースエントリで構成されます。
スタックトレースエントリ は、スタックトレース内の評価を表します。C++標準ライブラリでは std::stacktrace_entry によって表現されます。
目次 |
テンプレートパラメータ
| Allocator | - |
メモリの取得/解放およびそのメモリ内の要素の構築/破棄に使用されるアロケータ。この型は
Allocator
の要件を満たさなければならない。
Allocator::value_type
が
std::stacktrace_entry
でない場合、プログラムは不適格である。
|
メンバー型
| メンバ型 | 定義 |
value_type
|
std::stacktrace_entry |
const_reference
|
const value_type & |
reference
|
value_type & |
const_iterator
|
実装定義のconst
LegacyRandomAccessIterator
をモデルとする型
random_access_iterator
|
iterator
|
const_iterator
|
reverse_iterator
|
std:: reverse_iterator < iterator > |
reverse_const_iterator
|
std:: reverse_iterator < const_iterator > |
difference_type
|
実装定義の符号付き整数型 |
size_type
|
実装定義の符号なし整数型 |
allocator_type
|
Allocator
|
メンバー関数
新しい
basic_stacktrace
を作成する
(public member function) |
|
basic_stacktrace
を破棄する
(public member function) |
|
basic_stacktrace
に代入する
(public member function) |
|
|
[static]
|
現在のスタックトレースまたはその指定部分を取得する
(public static member function) |
|
関連付けられたアロケータを返す
(public member function) |
|
イテレータ |
|
|
先頭へのイテレータを返す
(public member function) |
|
|
終端へのイテレータを返す
(public member function) |
|
|
先頭への逆イテレータを返す
(public member function) |
|
|
終端への逆イテレータを返す
(public member function) |
|
容量 |
|
basic_stacktrace
が空かどうかをチェックする
(public member function) |
|
|
スタックトレースエントリの数を返す
(public member function) |
|
|
スタックトレースエントリの最大可能数を返す
(public member function) |
|
要素アクセス |
|
|
指定されたスタックトレースエントリにアクセスする
(public member function) |
|
|
境界チェック付きで指定されたスタックトレースエントリにアクセスする
(public member function) |
|
変更操作 |
|
|
内容を交換する
(public member function) |
|
非メンバー関数
|
(C++23)
|
2つの
basic_stacktrace
値のサイズと内容を比較する
(関数テンプレート) |
|
std::swap
アルゴリズムを特殊化する
(関数テンプレート) |
|
|
(C++23)
|
basic_stacktrace
の説明を含む文字列を返す
(関数テンプレート) |
|
(C++23)
|
basic_stracktrace
のストリーム出力を実行する
(関数テンプレート) |
ヘルパークラス
|
std::basic_stacktrace
のハッシュサポート
(クラステンプレートの特殊化) |
|
basic_stacktrace
のフォーマットサポート
(クラステンプレートの特殊化) |
注記
カスタムアロケータのサポートは、ホットパスや組み込み環境で
basic_stacktrace
を使用するために提供されています。ユーザーは適切な場合に
stacktrace_entry
オブジェクトをスタック上または他の場所に割り当てることができます。
std::stacktrace_entry
オブジェクトのシーケンスは、
std::basic_stacktrace
によって所有されており不変です。このシーケンスは空であるか、スタックトレース全体の連続した区間を表します。
boost
::
stacktrace
::
basic_stacktrace
(利用可能:
Boost.Stacktrace
) は、
std::basic_stacktrace
が利用できない場合に代わりに使用できます。
| 機能テスト マクロ | 値 | 標準 | 機能 |
|---|---|---|---|
__cpp_lib_stacktrace
|
202011L
|
(C++23) | スタックトレース ライブラリ |
__cpp_lib_formatters
|
202302L
|
(C++23) | std::thread::id と std::stacktrace のフォーマット |
例
Compiler Explorerを使用して得られた出力: msvc および gcc 。
出力例:
// msvc output (the lines ending with '⤶' arrows are split to fit the width): 0> C:\Users\ContainerAdministrator\AppData\Local\Temp\compiler-explorer-compiler20221122-⤶ 31624-2ja1sf.8ytzw\example.cpp(6): output_s!nested_func+0x1F 1> C:\Users\ContainerAdministrator\AppData\Local\Temp\compiler-explorer-compiler20221122-⤶ 31624-2ja1sf.8ytzw\example.cpp(12): output_s!func+0x15 2> C:\Users\ContainerAdministrator\AppData\Local\Temp\compiler-explorer-compiler20221122-⤶ 31624-2ja1sf.8ytzw\example.cpp(15): output_s!main+0xE 3> D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl(288): output_s!⤶ __scrt_common_main_seh+0x10C 4> KERNEL32!BaseThreadInitThunk+0x14 5> ntdll!RtlUserThreadStart+0x21 779 gcc output: 0# nested_func(int) at /app/example.cpp:7 1# func(int) at /app/example.cpp:13 2# at /app/example.cpp:18 3# at :0 4# at :0 5# 779
関連項目
|
(C++23)
|
スタックトレース内の評価の表現
(クラス) |