以下の内容はhttps://pyopyopyo.hatenablog.com/entry/2025/10/02/200000より取得しました。


C++でバックトレース(スタックトレース)を表示する方法(C++23)

C++23を使うと、スタックトレースが簡単に表示できます

#include <stacktrace>
#include <iostream>

void f() {
    std::cout << std::stacktrace::current() << std::endl;
}
int main() {
    f();
    return 0;
}

C++23で登場した関数なので

  • GCCはバージョン12以降
  • Visual C++は2022以降

でしか利用できません


またGCCでビルドする場合は、コンパイラオプションとして-std=c++23 と -lstdc++expを指定する必要があります



スタックフレームを順番にバックトレースしたい場合は

  for (auto frame : std::stacktrace::current()) {
      std::cout << frame << std::endl;
  }

と行った感じでコーディングできます

また

    std::cout << std::stacktrace::current(2,4) << std::endl;

と,引数を指定するとスタックフレームの2番目を起点に,最大4個までスタックフレームが取り出せます


C++23が使えない場合は大量のコードを書く必要があります。詳細は過去のエントリに書いてます
glibc でバックトレースを表示する方法(その2) - pyopyopyo - Linuxとかプログラミングの覚え書き -
glibc でバックトレースを表示する方法 - pyopyopyo - Linuxとかプログラミングの覚え書き -
C でバックトレース表示 - pyopyopyo - Linuxとかプログラミングの覚え書き -





以上の内容はhttps://pyopyopyo.hatenablog.com/entry/2025/10/02/200000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14