diff src/.gdbinit @ 32812:c49b460bb280

(xbacktrace): Handle case that $bt->function isn't a symbol.
author Gerd Moellmann <gerd@gnu.org>
date Tue, 24 Oct 2000 10:55:57 +0000
parents eb2d3d3a8eb5
children 8dbc92d11de2
line wrap: on
line diff
--- a/src/.gdbinit	Tue Oct 24 10:52:22 2000 +0000
+++ b/src/.gdbinit	Tue Oct 24 10:55:57 2000 +0000
@@ -315,14 +315,26 @@
 define xbacktrace
   set $bt = backtrace_list
   while $bt 
-    xprintsym *$bt->function
+    set $type = (enum Lisp_Type) ((*$bt->function >> gdb_valbits) & 0x7)
+    if $type == Lisp_Symbol
+      xprintsym *$bt->function
+    else
+      printf "0x%x ", *$bt->function
+      if $type == Lisp_Vectorlike
+        set $size = ((struct Lisp_Vector *) ((*$bt->function & $valmask) | gdb_data_seg_bits))->size
+        output (enum pvec_type) (($size & PVEC_FLAG) ? $size & PVEC_TYPE_MASK : 0)
+      else
+        printf "Lisp type %d", $type
+      end
+      echo \n
+    end
     set $bt = $bt->next
   end
 end
 document xbacktrace
   Print a backtrace of Lisp function calls from backtrace_list.
   Set a breakpoint at Fsignal and call this to see from where 
-  an error was signalled.
+  an error was signaled.
 end
 
 define xreload