Hello,

I implemented the support to print the backtrace when throwing an
exception. It can probably be improved but it works fine here.

What do you think about merging it on 1.8?

Sat Nov 11 02:21:25 BRST 2006  Otavio Salvador <[EMAIL PROTECTED]>
  * Print backtrace stack when throwing an exception
diff -rN -u old-backtrace-on-assert/ChangeLog new-backtrace-on-assert/ChangeLog
--- old-backtrace-on-assert/ChangeLog   2006-11-11 02:24:32.000000000 -0200
+++ new-backtrace-on-assert/ChangeLog   2006-11-11 02:24:32.000000000 -0200
@@ -8,6 +8,8 @@
 
        * autogen.sh: use -f on autopoint to ensure we have the files
        updated.
+
+       * configure.ac: add -rdynamic on CFLAGS.
        
 2006-11-08  Otavio Salvador <[EMAIL PROTECTED]>
 
diff -rN -u old-backtrace-on-assert/configure.ac 
new-backtrace-on-assert/configure.ac
--- old-backtrace-on-assert/configure.ac        2006-11-11 02:24:32.000000000 
-0200
+++ new-backtrace-on-assert/configure.ac        2006-11-11 02:24:32.000000000 
-0200
@@ -438,7 +438,7 @@
 AC_CHECK_FUNCS(canonicalize_file_name)
 CFLAGS="$OLD_CFLAGS"
 
-CFLAGS="$CFLAGS -W -Wall -Wno-unused -Wno-switch -Wno-format"
+CFLAGS="$CFLAGS -W -Wall -Wno-unused -Wno-switch -Wno-format -rdynamic"
 
 if test "$enable_Werror" = yes; then
        CFLAGS="$CFLAGS -Werror"
diff -rN -u old-backtrace-on-assert/libparted/ChangeLog 
new-backtrace-on-assert/libparted/ChangeLog
--- old-backtrace-on-assert/libparted/ChangeLog 2006-11-11 02:24:32.000000000 
-0200
+++ new-backtrace-on-assert/libparted/ChangeLog 2006-11-11 02:24:32.000000000 
-0200
@@ -1,3 +1,10 @@
+2006-11-11  Otavio Salvador  <[EMAIL PROTECTED]>
+
+       * libparted/debug.c (ped_assert): Print backtrace stack when
+       throwing an exception.
+
+       * libparted/Makefile.am: Add -rdynamic on LDFLAGS.
+
 2006-11-10  Otavio Salvador  <[EMAIL PROTECTED]>
 
        * libparted/filesys.c (ped_file_system_type_unregister): Handle
diff -rN -u old-backtrace-on-assert/libparted/debug.c 
new-backtrace-on-assert/libparted/debug.c
--- old-backtrace-on-assert/libparted/debug.c   2006-11-11 02:24:32.000000000 
-0200
+++ new-backtrace-on-assert/libparted/debug.c   2006-11-11 02:24:32.000000000 
-0200
@@ -30,6 +30,8 @@
 
 #ifdef DEBUG
 
+#include <execinfo.h>
+
 static void default_handler ( const int level, const char* file, int line,
                 const char* function, const char* msg );
 static PedDebugHandler* debug_handler = &default_handler;
@@ -87,6 +89,21 @@
        if ( cond )
                return 1;
 
+       /* Print backtrace stack */
+       void *stack[20];
+       size_t size;
+       char **strings;
+       
+       size = backtrace(stack, 20);
+       strings = backtrace_symbols(stack, size);
+
+       printf(_("Backtrace has %d calls on stack:\n"), size);
+       for (; size > 0; size--, strings++)
+               printf("  %d: %s\n", size, *strings);
+
+       free(strings);
+
+       /* Throw the exception */
        opt = ped_exception_throw (
                PED_EXCEPTION_BUG,
                PED_EXCEPTION_IGNORE_CANCEL,
diff -rN -u old-backtrace-on-assert/libparted/Makefile.am 
new-backtrace-on-assert/libparted/Makefile.am
--- old-backtrace-on-assert/libparted/Makefile.am       2006-11-11 
02:24:32.000000000 -0200
+++ new-backtrace-on-assert/libparted/Makefile.am       2006-11-11 
02:24:32.000000000 -0200
@@ -10,7 +10,7 @@
 partedincludedir      =        -I$(top_srcdir)/include
 lib_LTLIBRARIES              = libparted.la
 libparted_la_LDFLAGS  = -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
-                       -release $(LT_RELEASE)
+                                               -release $(LT_RELEASE) -rdynamic
 
 libparted_la_SOURCES  = debug.c                        \
                        device.c                \

-- 
        O T A V I O    S A L V A D O R
---------------------------------------------
 E-mail: [EMAIL PROTECTED]      UIN: 5906116
 GNU/Linux User: 239058     GPG ID: 49A5F855
 Home Page: http://www.freedom.ind.br/otavio
---------------------------------------------
"Microsoft gives you Windows ... Linux gives
 you the whole house."
_______________________________________________
parted-devel mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/parted-devel

Reply via email to