Commit 7f825c8af30948f0ffc83fb2383a4587594c2616

Authored by Georg Hopp
1 parent d28be8fb

add print backtrace

@@ -4,6 +4,7 @@ nobase_include_HEADERS = trbase.h \ @@ -4,6 +4,7 @@ nobase_include_HEADERS = trbase.h \
4 tr/interface.h \ 4 tr/interface.h \
5 tr/memory.h \ 5 tr/memory.h \
6 tr/logger.h \ 6 tr/logger.h \
  7 + tr/print_trace.h \
7 tr/sized_data.h \ 8 tr/sized_data.h \
8 tr/tree_macros.h \ 9 tr/tree_macros.h \
9 tr/interface/class.h \ 10 tr/interface/class.h \
  1 +/**
  2 + * \file
  3 + *
  4 + * \author The GNU Software Foundation.
  5 + *
  6 + * \copyright
  7 + * Copyright © 2014 The GNU Softare Foundation
  8 + *
  9 + * This program is free software: you can redistribute it and/or modify
  10 + * it under the terms of the GNU General Public License as published by
  11 + * the Free Software Foundation, either version 3 of the License, or
  12 + * (at your option) any later version.
  13 + *
  14 + * This program is distributed in the hope that it will be useful,
  15 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17 + * GNU General Public License for more details.
  18 + *
  19 + * You should have received a copy of the GNU General Public License
  20 + * along with this program. If not, see <http://www.gnu.org/licenses/>.
  21 + */
  22 +
  23 +void print_trace (void);
@@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
5 #include "tr/memory.h" 5 #include "tr/memory.h"
6 #include "tr/class.h" 6 #include "tr/class.h"
7 #include "tr/logger.h" 7 #include "tr/logger.h"
  8 +#include "tr/print_trace.h"
8 #include "tr/sized_data.h" 9 #include "tr/sized_data.h"
9 #include "tr/interface.h" 10 #include "tr/interface.h"
10 #include "tr/interface/class.h" 11 #include "tr/interface/class.h"
@@ -6,6 +6,7 @@ AM_CFLAGS += -I../include/ @@ -6,6 +6,7 @@ AM_CFLAGS += -I../include/
6 TR_CLASS = memory.c \ 6 TR_CLASS = memory.c \
7 interface.c \ 7 interface.c \
8 logger.c \ 8 logger.c \
  9 + print_trace.c \
9 stderr.c \ 10 stderr.c \
10 syslog.c \ 11 syslog.c \
11 sized_data.c \ 12 sized_data.c \
  1 +/**
  2 + * \file
  3 + *
  4 + * \author The GNU Software Foundation.
  5 + *
  6 + * \copyright
  7 + * Copyright © 2014 The GNU Softare Foundation
  8 + *
  9 + * This program is free software: you can redistribute it and/or modify
  10 + * it under the terms of the GNU General Public License as published by
  11 + * the Free Software Foundation, either version 3 of the License, or
  12 + * (at your option) any later version.
  13 + *
  14 + * This program is distributed in the hope that it will be useful,
  15 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17 + * GNU General Public License for more details.
  18 + *
  19 + * You should have received a copy of the GNU General Public License
  20 + * along with this program. If not, see <http://www.gnu.org/licenses/>.
  21 + */
  22 +
  23 +#include <execinfo.h>
  24 +#include <stdio.h>
  25 +#include <stdlib.h>
  26 +
  27 +/* Obtain a backtrace and print it to stdout. */
  28 +void
  29 +print_trace (void)
  30 +{
  31 + void * array[10];
  32 + size_t size;
  33 + char ** strings;
  34 + size_t i;
  35 +
  36 + size = backtrace (array, 10);
  37 + strings = backtrace_symbols (array, size);
  38 +
  39 + printf ("Obtained %zd stack frames.\n", size);
  40 +
  41 + for (i = 0; i < size; i++)
  42 + printf ("%s\n", strings[i]);
  43 +
  44 + free (strings);
  45 +}
  46 +
  47 +// vim: set ts=4 sw=4:
Please register or login to post a comment