std:: basic_stacktrace
|
Défini dans l'en-tête
<stacktrace>
|
||
|
template
<
class
Allocator
>
class basic_stacktrace ; |
(1) | (depuis C++23) |
|
using
stacktrace
=
std :: basic_stacktrace < std:: allocator < std:: stacktrace_entry >> ; |
(2) | (depuis C++23) |
|
namespace
pmr
{
using
stacktrace
=
|
(3) | (depuis C++23) |
basic_stacktrace
représente un instantané de la pile d'appels complète ou d'une partie donnée de celle-ci. Il satisfait aux exigences de
AllocatorAwareContainer
,
SequenceContainer
, et
ReversibleContainer
, à l'exception que seuls le déplacement, l'affectation, l'échange et les opérations pour les conteneurs séquentiels qualifiés const sont pris en charge, et la sémantique des fonctions de comparaison est différente de celle requise pour un conteneur.
basic_stacktrace
utilisant l'allocateur par défaut
std::allocator
.
La séquence d'invocation de l'évaluation courante x 0 dans le thread d'exécution courant est une séquence (x 0 , ..., x n ) d'évaluations telle que, pour i≥0 , x i se trouve dans l'invocation de fonction x i+1 .
Une stacktrace est une représentation approximative d'une séquence d'invocation et se compose d'entrées de stacktrace.
Une entrée de pile d'appels représente une évaluation dans une pile d'appels. Elle est représentée par std::stacktrace_entry dans la bibliothèque standard C++.
Table des matières |
Paramètres du modèle
| Allocator | - |
Un allocateur utilisé pour acquérir/libérer la mémoire et pour construire/détruire les éléments dans cette mémoire. Le type doit satisfaire aux exigences de
Allocator
. Le programme est mal formé si
Allocator::value_type
n'est pas
std::stacktrace_entry
.
|
Types membres
| Type de membre | Définition |
value_type
|
std::stacktrace_entry |
const_reference
|
const value_type & |
reference
|
value_type & |
const_iterator
|
type const défini par l'implémentation qui modélise
LegacyRandomAccessIterator
et qui est un
random_access_iterator
|
iterator
|
const_iterator
|
reverse_iterator
|
std:: reverse_iterator < iterator > |
reverse_const_iterator
|
std:: reverse_iterator < const_iterator > |
difference_type
|
type entier signé défini par l'implémentation |
size_type
|
type entier non signé défini par l'implémentation |
allocator_type
|
Allocator
|
Fonctions membres
crée un nouveau
basic_stacktrace
(fonction membre publique) |
|
détruit le
basic_stacktrace
(fonction membre publique) |
|
assigne au
basic_stacktrace
(fonction membre publique) |
|
|
[static]
|
obtient la stacktrace actuelle ou sa partie spécifiée
(fonction membre statique publique) |
|
retourne l'allocateur associé
(fonction membre publique) |
|
Itérateurs |
|
|
retourne un itérateur vers le début
(fonction membre publique) |
|
|
retourne un itérateur vers la fin
(fonction membre publique) |
|
|
retourne un itérateur inverse vers le début
(fonction membre publique) |
|
|
retourne un itérateur inverse vers la fin
(fonction membre publique) |
|
Capacité |
|
vérifie si le
basic_stacktrace
est vide
(fonction membre publique) |
|
|
retourne le nombre d'entrées de la stacktrace
(fonction membre publique) |
|
|
retourne le nombre maximum possible d'entrées de stacktrace
(fonction membre publique) |
|
Accès aux éléments |
|
|
accède à l'entrée de stacktrace spécifiée
(fonction membre publique) |
|
|
accède à l'entrée de stacktrace spécifiée avec vérification des limites
(fonction membre publique) |
|
Modificateurs |
|
|
échange le contenu
(fonction membre publique) |
|
Fonctions non membres
|
(C++23)
|
compare les tailles et le contenu de deux
basic_stacktrace
(modèle de fonction) |
|
spécialise l'algorithme
std::swap
(modèle de fonction) |
|
|
(C++23)
|
retourne une chaîne avec une description du
basic_stacktrace
(modèle de fonction) |
|
(C++23)
|
effectue la sortie en flux du
basic_stracktrace
(modèle de fonction) |
Classes d'assistance
|
Support de hachage pour
std::basic_stacktrace
(spécialisation de modèle de classe) |
|
Support de formatage pour
basic_stacktrace
(spécialisation de modèle de classe) |
Notes
La prise en charge des allocateurs personnalisés est fournie pour utiliser
basic_stacktrace
sur un chemin critique ou dans des environnements embarqués. Les utilisateurs peuvent allouer les objets
stacktrace_entry
sur la pile ou à un autre endroit approprié.
La séquence d'objets
std::stacktrace_entry
détenue par un
std::basic_stacktrace
est immuable, et soit elle est vide, soit elle représente un intervalle contigu de la pile d'appels complète.
boost
::
stacktrace
::
basic_stacktrace
(disponible dans
Boost.Stacktrace
) peut être utilisé à la place lorsque
std::basic_stacktrace
n'est pas disponible.
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_stacktrace
|
202011L
|
(C++23) | Bibliothèque Stacktrace |
__cpp_lib_formatters
|
202302L
|
(C++23) | Formatage de std::thread::id et std::stacktrace |
Exemple
Le résultat obtenu en utilisant Compiler Explorer : msvc et gcc .
Résultat possible :
// 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
Voir aussi
|
(C++23)
|
représentation d'une évaluation dans une stacktrace
(classe) |