std:: basic_stacktrace
|
Definido en el encabezado
<stacktrace>
|
||
|
template
<
class
Allocator
>
class basic_stacktrace ; |
(1) | (desde C++23) |
|
using
stacktrace
=
std :: basic_stacktrace < std:: allocator < std:: stacktrace_entry >> ; |
(2) | (desde C++23) |
|
namespace
pmr
{
using
stacktrace
=
|
(3) | (desde C++23) |
basic_stacktrace
representa una instantánea de todo el seguimiento de pila o de una parte específica del mismo. Satisface los requisitos de
AllocatorAwareContainer
,
SequenceContainer
, y
ReversibleContainer
, excepto que solo se admiten operaciones de movimiento, asignación, intercambio y operaciones para contenedores de secuencia calificados como constantes, y la semántica de las funciones de comparación es diferente de la requerida para un contenedor.
basic_stacktrace
que utiliza el
std::allocator
predeterminado.
La secuencia de invocación de la evaluación actual x 0 en el hilo de ejecución actual es una secuencia (x 0 , ..., x n ) de evaluaciones tal que, para i≥0 , x i está dentro de la invocación de función x i+1 .
Un stacktrace es una representación aproximada de una secuencia de invocación y consiste en entradas de stacktrace.
Una entrada de stacktrace representa una evaluación en un stacktrace. Está representada por std::stacktrace_entry en la biblioteca estándar de C++.
Contenidos |
Parámetros de plantilla
| Allocator | - |
Un asignador que se utiliza para adquirir/liberar memoria y para construir/destruir los elementos en esa memoria. El tipo debe cumplir con los requisitos de
Allocator
. El programa está mal formado si
Allocator::value_type
no es
std::stacktrace_entry
.
|
Tipos de miembros
| Tipo de miembro | Definición |
value_type
|
std::stacktrace_entry |
const_reference
|
const value_type & |
reference
|
value_type & |
const_iterator
|
tipo const definido por la implementación que modela
LegacyRandomAccessIterator
random_access_iterator
|
iterator
|
const_iterator
|
reverse_iterator
|
std:: reverse_iterator < iterator > |
reverse_const_iterator
|
std:: reverse_iterator < const_iterator > |
difference_type
|
tipo entero con signo definido por la implementación |
size_type
|
tipo entero sin signo definido por la implementación |
allocator_type
|
Allocator
|
Funciones miembro
crea un nuevo
basic_stacktrace
(función de miembro pública) |
|
destruye el
basic_stacktrace
(función de miembro pública) |
|
asigna al
basic_stacktrace
(función de miembro pública) |
|
|
[static]
|
obtiene el stacktrace actual o su parte especificada
(función de miembro estática pública) |
|
devuelve el asignador asociado
(función de miembro pública) |
|
Iteradores |
|
|
devuelve un iterador al inicio
(función de miembro pública) |
|
|
devuelve un iterador al final
(función de miembro pública) |
|
|
devuelve un iterador inverso al inicio
(función de miembro pública) |
|
|
devuelve un iterador inverso al final
(función de miembro pública) |
|
Capacidad |
|
verifica si el
basic_stacktrace
está vacío
(función de miembro pública) |
|
|
devuelve el número de entradas del stacktrace
(función de miembro pública) |
|
|
devuelve el número máximo posible de entradas del stacktrace
(función de miembro pública) |
|
Acceso a elementos |
|
|
accede a la entrada especificada del stacktrace
(función de miembro pública) |
|
|
accede a la entrada especificada del stacktrace con verificación de límites
(función de miembro pública) |
|
Modificadores |
|
|
intercambia los contenidos
(función de miembro pública) |
|
Funciones no miembro
|
(C++23)
|
compara los tamaños y contenidos de dos valores
basic_stacktrace
(plantilla de función) |
|
especializa el algoritmo
std::swap
(plantilla de función) |
|
|
(C++23)
|
devuelve una cadena con la descripción del
basic_stacktrace
(plantilla de función) |
|
(C++23)
|
realiza salida por flujo del
basic_stracktrace
(plantilla de función) |
Clases auxiliares
|
soporte de hash para
std::basic_stacktrace
(especialización de plantilla de clase) |
|
soporte de formato para
basic_stacktrace
(especialización de plantilla de clase) |
Notas
Se proporciona soporte para asignadores personalizados para usar
basic_stacktrace
en una ruta crítica o en entornos embebidos. Los usuarios pueden asignar
stacktrace_entry
objetos en el stack o en cualquier otro lugar, donde sea apropiado.
La secuencia de objetos
std::stacktrace_entry
propiedad de un
std::basic_stacktrace
es inmutable, y o bien está vacía o representa un intervalo contiguo del stacktrace completo.
boost
::
stacktrace
::
basic_stacktrace
(disponible en
Boost.Stacktrace
) puede utilizarse en lugar de
std::basic_stacktrace
cuando no esté disponible.
| Macro de prueba de características | Valor | Estándar | Característica |
|---|---|---|---|
__cpp_lib_stacktrace
|
202011L
|
(C++23) | Biblioteca Stacktrace |
__cpp_lib_formatters
|
202302L
|
(C++23) | Formateo de std::thread::id y std::stacktrace |
Ejemplo
La salida obtenida usando Compiler Explorer: msvc y gcc .
Salida posible:
// 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
Véase también
|
(C++23)
|
representación de una evaluación en un seguimiento de pila
(clase) |