Как напечатать имена функций, используя boost.stacktrace? - PullRequest
0 голосов
/ 13 октября 2018

Я использую boost.stacktrace для печати стековых трасс исключений, вот код:

#include <iostream>
#include <boost/stacktrace.hpp>

void bar() {
    throw std::runtime_error("A runtime error.");
}

void foo() {
    bar();
}

int main (int argc, char* argv[]) {
    try {
        foo();
    } catch (std::exception& e) {
        std::cout << e.what() << std::endl;
        std::cout << boost::stacktrace::stacktrace() << std::endl;
    }
    return 0;
}

Я скомпилировал и выполнил его с помощью следующей команды:

clang++ -g hello.cpp -ldl -lboost_stacktrace_backtrace -lbacktrace
./a.out

И я получил следующий результат:

A runtime error.
 0# 0x000056335CB25570 in ./a.out
 1# __libc_start_main in /usr/lib/libc.so.6
 2# 0x000056335CB2534E in ./a.out

Не хорошо, имена функций заменяются адресами.Я хочу что-то вроде этого (что показано на сайте boost.stacktrace ):

0# bar(int) at /path/to/source/file.cpp:70
1# bar(int) at /path/to/source/file.cpp:70
2# bar(int) at /path/to/source/file.cpp:70
3# bar(int) at /path/to/source/file.cpp:70
4# main at /path/to/main.cpp:93
5# __libc_start_main in /lib/x86_64-linux-gnu/libc.so.6
6# _start

Как я могу это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...