kennen:include:stacktrace
<stacktrace>
std::stacktrace
enthält eine Folge von std::stacktrace_entry
-Objekten und ermöglicht nachzuvollziehen, auf welchem Wege eine Funktion aufgerufen wurde:
- stacktrace.cpp
#include <print> #include <stacktrace> int f(int x) { auto s = std::stacktrace::current(); std::println("{}", s); for(auto const& entry : s) std::print("Funktion: {}\nDatei {}, Zeile {}\n---\n", entry.description(), entry.source_file(), entry.source_line()); return x + 20; } int g(int y) { return f(y + 20); } int main() { std::println("{}", g(2)); }
liefert z.Z. (Nov 2024) mit g++15 HEAD:
0# f(int) at /app/example.cpp:6 1# g(int) at /app/example.cpp:23 2# main at /app/example.cpp:28 3# at :0 4# __libc_start_main at :0 5# _start at :0 6# Funktion: f(int) Datei /app/example.cpp, Zeile 6 --- Funktion: g(int) Datei /app/example.cpp, Zeile 23 --- Funktion: main Datei /app/example.cpp, Zeile 28 --- Funktion: Datei , Zeile 0 --- Funktion: __libc_start_main Datei , Zeile 0 --- Funktion: _start Datei , Zeile 0 --- Funktion: Datei , Zeile 0 --- 42
kennen/include/stacktrace.txt · Zuletzt geändert: 2024-11-01 14:18 von rrichter