namespace cpp {}

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


kennen:include:stacktrace

Dies ist eine alte Version des Dokuments!


<stacktrace>

std::stacktrace 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: {}\n"
               "Datei {}, 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: <text>

 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 </text>

kennen/include/stacktrace.1730466234.txt.gz · Zuletzt geändert: 2024-11-01 14:03 von rrichter

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki