std:: basic_stacktrace
|
Definiert im Header
<stacktrace>
|
||
|
template
<
class
Allocator
>
class basic_stacktrace ; |
(1) | (seit C++23) |
|
using
stacktrace
=
std :: basic_stacktrace < std:: allocator < std:: stacktrace_entry >> ; |
(2) | (seit C++23) |
|
namespace
pmr
{
using
stacktrace
=
|
(3) | (seit C++23) |
basic_stacktrace
-Klassenvorlage repräsentiert eine Momentaufnahme der gesamten Stacktrace oder eines bestimmten Teils davon. Sie erfüllt die Anforderungen von
AllocatorAwareContainer
,
SequenceContainer
, und
ReversibleContainer
, mit der Ausnahme, dass nur Move-Operationen, Zuweisungen, Swap und Operationen für const-qualifizierte Sequenzcontainer unterstützt werden, und die Semantik der Vergleichsfunktionen sich von denen unterscheidet, die für einen Container erforderlich sind.
Die Aufrufsequenz der aktuellen Auswertung x 0 im aktuellen Ausführungsstrang ist eine Sequenz (x 0 , ..., x n ) von Auswertungen, sodass für i≥0 , x i innerhalb des Funktionsaufrufs x i+1 liegt.
Ein Stacktrace ist eine ungefähre Darstellung einer Aufrufsequenz und besteht aus Stacktrace-Einträgen.
Ein Stacktrace-Eintrag repräsentiert eine Auswertung in einem Stacktrace. Er wird durch std::stacktrace_entry in der C++-Standardbibliothek dargestellt.
Inhaltsverzeichnis |
Template-Parameter
| Allocator | - |
Ein Allokator, der verwendet wird, um Speicher zu beschaffen/freizugeben und Elemente in diesem Speicher zu konstruieren/destruieren. Der Typ muss die Anforderungen von
Allocator
erfüllen. Das Programm ist fehlerhaft, wenn
Allocator::value_type
nicht
std::stacktrace_entry
ist.
|
Mitgliedertypen
| Mitgliedertyp | Definition |
value_type
|
std::stacktrace_entry |
const_reference
|
const value_type & |
reference
|
value_type & |
const_iterator
|
implementierungsdefinierter const
LegacyRandomAccessIterator
-Typ, der
random_access_iterator
modelliert
|
iterator
|
const_iterator
|
reverse_iterator
|
std:: reverse_iterator < iterator > |
reverse_const_iterator
|
std:: reverse_iterator < const_iterator > |
difference_type
|
implementierungsdefinierter Ganzzahltyp mit Vorzeichen |
size_type
|
implementierungsdefinierter Ganzzahltyp ohne Vorzeichen |
allocator_type
|
Allocator
|
Memberfunktionen
erstellt einen neuen
basic_stacktrace
(Öffentliche Mitgliedsfunktion) |
|
zerstört den
basic_stacktrace
(Öffentliche Mitgliedsfunktion) |
|
weist dem
basic_stacktrace
zu
(Öffentliche Mitgliedsfunktion) |
|
|
[static]
|
ermittelt die aktuelle Stacktrace oder ihren angegebenen Teil
(Öffentliche statische Mitgliedsfunktion) |
|
gibt den zugehörigen Allokator zurück
(Öffentliche Mitgliedsfunktion) |
|
Iteratoren |
|
|
gibt einen Iterator zum Anfang zurück
(Öffentliche Mitgliedsfunktion) |
|
|
gibt einen Iterator zum Ende zurück
(Öffentliche Mitgliedsfunktion) |
|
|
gibt einen umgekehrten Iterator zum Anfang zurück
(Öffentliche Mitgliedsfunktion) |
|
|
gibt einen umgekehrten Iterator zum Ende zurück
(Öffentliche Mitgliedsfunktion) |
|
Kapazität |
|
prüft, ob der
basic_stacktrace
leer ist
(Öffentliche Mitgliedsfunktion) |
|
|
gibt die Anzahl der Stacktrace-Einträge zurück
(Öffentliche Mitgliedsfunktion) |
|
|
gibt die maximal mögliche Anzahl von Stacktrace-Einträgen zurück
(Öffentliche Mitgliedsfunktion) |
|
Elementzugriff |
|
|
greift auf den angegebenen Stacktrace-Eintrag zu
(Öffentliche Mitgliedsfunktion) |
|
|
greift auf den angegebenen Stacktrace-Eintrag mit Grenzprüfung zu
(Öffentliche Mitgliedsfunktion) |
|
Modifikatoren |
|
|
tauscht die Inhalte aus
(Öffentliche Mitgliedsfunktion) |
|
Nicht-Member-Funktionen
|
(C++23)
|
vergleicht die Größen und Inhalte zweier
basic_stacktrace
-Werte
(Funktions-Template) |
|
spezialisiert den
std::swap
-Algorithmus
(Funktions-Template) |
|
|
(C++23)
|
gibt eine Zeichenkette mit einer Beschreibung der
basic_stacktrace
zurück
(Funktions-Template) |
|
(C++23)
|
führt Stream-Ausgabe für
basic_stracktrace
durch
(Funktions-Template) |
Hilfsklassen
|
Hash-Unterstützung für
std::basic_stacktrace
(Klassen-Template-Spezialisierung) |
|
Formatierungsunterstützung für
basic_stacktrace
(Klassen-Template-Spezialisierung) |
Hinweise
Die Unterstützung für benutzerdefinierte Allokatoren wird bereitgestellt, um
basic_stacktrace
in einem Hot Path oder in eingebetteten Umgebungen zu verwenden. Benutzer können
stacktrace_entry
Objekte auf dem Stack oder an einem anderen geeigneten Ort allozieren.
Die Abfolge der
std::stacktrace_entry
-Objekte, die von einem
std::basic_stacktrace
besessen werden, ist unveränderlich und entweder leer oder repräsentiert ein zusammenhängendes Intervall der gesamten Stacktrace.
boost
::
stacktrace
::
basic_stacktrace
(verfügbar in
Boost.Stacktrace
) kann stattdessen verwendet werden, wenn
std::basic_stacktrace
nicht verfügbar ist.
| Feature-Test Makro | Wert | Std | Funktion |
|---|---|---|---|
__cpp_lib_stacktrace
|
202011L
|
(C++23) | Stacktrace Bibliothek |
__cpp_lib_formatters
|
202302L
|
(C++23) | Formatierung von std::thread::id und std::stacktrace |
Beispiel
Die mit Compiler Explorer erhaltene Ausgabe: msvc und gcc .
Mögliche Ausgabe:
// 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
Siehe auch
|
(C++23)
|
Darstellung einer Auswertung in einer Stacktrace
(Klasse) |