Как красивее распечатать стек вызовов в C / C ++?

Я хотел бы напечатать стек вызовов с дополнительной информацией, как в GDB.

Это то, что я до сих пор.

void to_print_callstack()
{
    void *buffer[100];
    int n = backtrace(buffer,10);
    char **str = backtrace_symbols(buffer, n);

    for (int i = 0; i < n; i++)
    {
        printf("%d:  %s\n", i, str[i]);
    }
}

Когда он запускается, я получаю что-то, как показано ниже.

0:  ./test-prog() [0x4466bf]
1:  ./test-prog() [0x445e1d]
2:  ./test-prog() [0x443fd5]
3:  ./test-prog() [0x439a99]
4:  ./test-prog() [0x43302f]
5:  ./test-prog() [0x4322c9]
6:  ./test-prog() [0x4320cd]
7:  ./test-prog() [0x43e76b]
8:  /lib/libc.so.6(__libc_start_main+0xfd) [0x7fc4de7d8c4d]
9:  ./test-prog() [0x431569]

Трудно читать. С именами функций было бы намного лучше. Большое спасибо за совет.

Ответы на вопрос(1)

Ваш ответ на вопрос