//
// aegis - project change supervisor
// Copyright (C) 2014 Peter Miller
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3 of the License, or (at
// your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program. If not, see .
//
#include
#include
#include
#include
#ifdef HAVE_BACKTRACE
void
back_trace_print(void)
{
fflush(stdout);
fprintf(stderr, "%s: %d: %s\n", __FILE__, __LINE__, __PRETTY_FUNCTION__);
#define BT_MAX_DEPTH 20
void **bt_info;
bt_info = (void**)calloc(BT_MAX_DEPTH, sizeof(void*));
int bt_depth = backtrace(bt_info, BT_MAX_DEPTH);
fprintf(stderr, "%s: %d: bt_depth = %d\n", __FILE__, __LINE__, bt_depth);
char **symbol = backtrace_symbols(bt_info, bt_depth);
fprintf(stderr, "%s: %d: symbol = %p\n", __FILE__, __LINE__, symbol);
for (int j = 0; j < bt_depth; ++j)
{
fprintf(stderr, "%d: %s\n", j, symbol[j]);
}
fflush(stderr);
}
#else
void
back_trace_print(void)
{
}
#endif
// vim: set ts=8 sw=4 et :