Example: core_backtrace_example

Console output (for a GNU/Linux build, without debug symbols):

[0 ] (unknown file) Foo::func1(int, int)
[1 ] (unknown file) main
[2 ] /build/glibc-S9d2JN/glibc-2.27/csu/../csu/libc-start.c:344 __libc_start_main
[3 ] (unknown file) _start

C++ example source code:

/* +---------------------------------------------------------------------------+
   |                     Mobile Robot Programming Toolkit (MRPT)               |
   |                          https://www.mrpt.org/                            |
   |                                                                           |
   | Copyright (c) 2005-2024, Individual contributors, see AUTHORS file        |
   | See: https://www.mrpt.org/Authors - All rights reserved.                  |
   | Released under BSD License. See details in https://www.mrpt.org/License   |
   +---------------------------------------------------------------------------+
   */

#include <mrpt/core/backtrace.h>
#include <mrpt/core/exceptions.h>

#include <iostream>

class Foo
{
   public:
    static int func1(int a, int b)
    {
        mrpt::TCallStackBackTrace bt;
        mrpt::callStackBackTrace(bt);
        std::cout << bt.asString();
        return a + b;
    }
};

int main()
{
    try
    {
        Foo::func1(1, 2);
        return 0;
    }
    catch (const std::exception& e)
    {
        std::cerr << "MRPT error: " << mrpt::exception_to_str(e) << std::endl;
        return -1;
    }
}