Как красивее распечатать стек вызовов в 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]
Трудно читать. С именами функций было бы намного лучше. Большое спасибо за совет.