1 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001,
2 # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
3 # Free Software Foundation, Inc.
5 # This file is part of GNU Emacs.
7 # GNU Emacs is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 3, or (at your option)
12 # GNU Emacs is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with GNU Emacs; see the file COPYING. If not, write to the
19 # Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 # Boston, MA 02110-1301, USA.
22 # Force loading of symbols, enough to give us gdb_valbits etc.
24 # With some compilers, we need this to give us struct Lisp_Symbol etc.:
27 # Find lwlib source files too.
29 #dir /gd/gnu/lesstif-0.89.9/lib/Xm
31 # Don't enter GDB when user types C-g to quit.
32 # This has one unfortunate effect: you can't type C-c
33 # at the GDB to stop Emacs, when using X.
34 # However, C-z works just as well in that case.
37 # Make it work like SIGINT normally does.
40 # Pass on user signals
41 handle SIGUSR1 noprint pass
42 handle SIGUSR2 noprint pass
44 # Don't pass SIGALRM to Emacs. This makes problems when
48 # $valmask and $tagmask are mask values set up by the xreload macro below.
50 # Use $bugfix so that the value isn't a constant.
51 # Using a constant runs into GDB bugs sometimes.
54 set $ptr = (gdb_use_union ? (gdb_use_lsb ? $bugfix.u.val << gdb_gctypebits : $bugfix.u.val) : $bugfix & $valmask) | gdb_data_seg_bits
59 set $int = gdb_use_union ? $bugfix.s.val : (gdb_use_lsb ? $bugfix : $bugfix << gdb_gctypebits) >> gdb_gctypebits
64 set $type = gdb_use_union ? $bugfix.s.type : (enum Lisp_Type) (gdb_use_lsb ? $bugfix & $tagmask : $bugfix >> gdb_valbits)
67 # Set up something to print out s-expressions.
68 # We save and restore print_output_debug_flag to prevent the w32 port
69 # from calling OutputDebugString, which causes GDB to display each
70 # character twice (yuk!).
72 set $output_debug = print_output_debug_flag
73 set print_output_debug_flag = 0
75 set print_output_debug_flag = $output_debug
78 Print the emacs s-expression which is $.
79 Works only when an inferior emacs is executing.
82 # Print out s-expressions
85 set $output_debug = print_output_debug_flag
86 set print_output_debug_flag = 0
87 set safe_debug_print ($tmp)
88 set print_output_debug_flag = $output_debug
91 Print the argument as an emacs s-expression
92 Works only when an inferior emacs is executing.
95 # Print out s-expressions from tool bar
98 set $output_debug = print_output_debug_flag
99 set print_output_debug_flag = 0
100 set safe_debug_print ($tmp)
101 set print_output_debug_flag = $output_debug
104 Print the argument as an emacs s-expression.
105 Works only when an inferior emacs is executing.
106 For use on tool bar when debugging in Emacs
107 where the variable name would not otherwise
108 be recorded in the GUD buffer.
111 # Print value of lisp variable
114 set $output_debug = print_output_debug_flag
115 set print_output_debug_flag = 0
116 set safe_debug_print ( find_symbol_value (intern ($tmp)))
117 set print_output_debug_flag = $output_debug
120 Print the value of the lisp variable given as argument.
121 Works only when an inferior emacs is executing.
124 # Print value of lisp variable
127 set $output_debug = print_output_debug_flag
128 set print_output_debug_flag = 0
129 set safe_debug_print (find_symbol_value (intern ($tmp)))
130 set print_output_debug_flag = $output_debug
133 Print the value of the lisp variable given as argument.
134 Works only when an inferior emacs is executing.
135 For use when debugging in Emacs where the variable
136 name would not otherwise be recorded in the GUD buffer.
139 # Print out current buffer point and boundaries
141 set $b = current_buffer
143 printf "BUF PT: %d", $b->pt
144 if ($b->pt != $b->pt_byte)
145 printf "[%d]", $b->pt_byte
147 printf " of 1..%d", $t->z
148 if ($t->z != $t->z_byte)
149 printf "[%d]", $t->z_byte
151 if ($b->begv != 1 || $b->zv != $t->z)
152 printf " NARROW=%d..%d", $b->begv, $b->zv
153 if ($b->begv != $b->begv_byte || $b->zv != $b->zv_byte)
154 printf " [%d..%d]", $b->begv_byte, $b->zv_byte
157 printf " GAP: %d", $t->gpt
158 if ($t->gpt != $t->gpt_byte)
159 printf "[%d]", $t->gpt_byte
161 printf " SZ=%d\n", $t->gap_size
164 Print current buffer's point and boundaries.
165 Prints values of point, beg, end, narrow, and gap for current buffer.
169 set $itmethod = $arg0
172 printf "GET_FROM_BUFFER"
175 printf "GET_FROM_DISPLAY_VECTOR"
178 printf "GET_FROM_STRING"
181 printf "GET_FROM_C_STRING"
184 printf "GET_FROM_IMAGE"
187 printf "GET_FROM_STRETCH"
189 if ($itmethod < 0 || $itmethod > 5)
194 Pretty print it->method given as first arg
197 # Print out iterator given as first arg
200 printf "cur=%d", $it->current.pos.charpos
201 if ($it->current.pos.charpos != $it->current.pos.bytepos)
202 printf "[%d]", $it->current.pos.bytepos
204 printf " pos=%d", $it->position.charpos
205 if ($it->position.charpos != $it->position.bytepos)
206 printf "[%d]", $it->position.bytepos
208 printf " start=%d", $it->start.pos.charpos
209 if ($it->start.pos.charpos != $it->start.pos.bytepos)
210 printf "[%d]", $it->start.pos.bytepos
212 printf " end=%d", $it->end_charpos
213 printf " stop=%d", $it->stop_charpos
214 printf " face=%d", $it->face_id
215 if ($it->multibyte_p)
218 if ($it->header_line_p)
221 if ($it->n_overlay_strings > 0)
222 printf " nov=%d", $it->n_overlay_strings
225 printf " sp=%d", $it->sp
229 if ($it->len == 1 && $it->c >= ' ' && it->c < 255)
230 printf " ch='%c'", $it->c
232 printf " ch=[%d,%d]", $it->c, $it->len
238 printf "IT_CHARACTER"
241 printf "IT_COMPOSITION"
253 printf "IT_TRUNCATION"
256 printf "IT_CONTINUATION"
258 if ($it->what < 0 || $it->what > 6)
262 if ($it->method != 0)
265 pitmethod $it->method
266 if ($it->method == 2)
268 printf "[%d]", $it->current.string_pos.charpos
270 if ($it->method == 4)
272 printf "[%d]", $it->image_id
277 printf "BIDI: base_stop=%d prev_stop=%d level=%d\n", $it->base_level_stop, $it->prev_stop, $it->bidi_it.resolved_level
279 if ($it->region_beg_charpos >= 0)
280 printf "reg=%d-%d ", $it->region_beg_charpos, $it->region_end_charpos
282 printf "vpos=%d hpos=%d", $it->vpos, $it->hpos,
283 printf " y=%d lvy=%d", $it->current_y, $it->last_visible_y
284 printf " x=%d vx=%d-%d", $it->current_x, $it->first_visible_x, $it->last_visible_x
285 printf " w=%d", $it->pixel_width
286 printf " a+d=%d+%d=%d", $it->ascent, $it->descent, $it->ascent+$it->descent
287 printf " max=%d+%d=%d", $it->max_ascent, $it->max_descent, $it->max_ascent+$it->max_descent
290 while ($i < $it->sp && $i < 4)
291 set $e = $it->stack[$i]
292 printf "stack[%d]: ", $i
294 printf "[%d]", $e->position.charpos
300 Pretty print a display iterator.
301 Take one arg, an iterator object or pointer.
308 Pretty print the display iterator it.
313 printf "y=%d x=%d pwid=%d", $row->y, $row->x, $row->pixel_width
314 printf " a+d=%d+%d=%d", $row->ascent, $row->height-$row->ascent, $row->height
315 printf " phys=%d+%d=%d", $row->phys_ascent, $row->phys_height-$row->phys_ascent, $row->phys_height
316 printf " vis=%d", $row->visible_height
317 printf " L=%d T=%d R=%d", $row->used[0], $row->used[1], $row->used[2]
319 printf "start=%d end=%d", $row->start.pos.charpos, $row->end.pos.charpos
323 if ($row->displays_text_p)
326 if ($row->mode_line_p)
329 if ($row->continued_p)
332 if ($row-> truncated_on_left_p)
335 if ($row-> truncated_on_right_p)
338 if ($row->starts_in_middle_of_char_p)
341 if ($row->ends_in_middle_of_char_p)
344 if ($row->ends_in_newline_from_string_p)
347 if ($row->ends_at_zv_p)
350 if ($row->overlapped_p)
353 if ($row->overlapping_p)
359 Pretty print information about glyph_row.
360 Takes one argument, a row object or pointer.
367 Pretty print information about glyph_row in row.
373 printf "y=%d x=%d vpos=%d hpos=%d", $cp->y, $cp->x, $cp->vpos, $cp->hpos
376 Pretty print a window cursor.
381 pcursorx output_cursor
385 Pretty print the output_cursor.
390 xgetint $w->sequence_number
391 if ($w->mini_p != Qnil)
394 printf "Window %d ", $int
396 set $tem = (struct buffer *) $ptr
398 printf "%s", ((struct Lisp_String *) $ptr)->data
401 set $tem = (struct Lisp_Marker *) $ptr
402 printf "start=%d end:", $tem->charpos
403 if ($w->window_end_valid != Qnil)
404 xgetint $w->window_end_pos
405 printf "pos=%d", $int
406 xgetint $w->window_end_vpos
407 printf " vpos=%d", $int
411 printf " vscroll=%d", $w->vscroll
412 if ($w->force_start != Qnil)
413 printf " FORCE_START"
415 if ($w->must_be_updated_p)
422 pcursorx $w->phys_cursor
423 if ($w->phys_cursor_on_p)
429 if ($w->last_cursor_off_p != $w->cursor_off_p)
430 if ($w->last_cursor_off_p)
436 if ($w->cursor_off_p)
444 Pretty print a window structure.
445 Takes one argument, a pointer to a window structure.
452 Pretty print window structure w.
477 if ($arg0 < 0 || $arg0 > 6)
482 Print textual description of bidi type given as first argument.
489 if ($g->u.ch >= ' ' && $g->u.ch < 127)
490 printf "CHAR[%c]", $g->u.ch
492 printf "CHAR[0x%x]", $g->u.ch
497 printf "COMP[%d (%d..%d)]", $g->u.cmp.id, $g->slice.cmp.from, $g->slice.cmp.to
502 if ($g->u.glyphless.method == 0)
505 if ($g->u.glyphless.method == 1)
508 if ($g->u.glyphless.method == 2)
511 if ($g->u.glyphless.method == 3)
517 printf "IMAGE[%d]", $g->u.img_id
521 printf "STRETCH[%d+%d]", $g->u.stretch.height, $g->u.stretch.ascent
523 xgettype ($g->object)
524 if ($type == Lisp_String)
525 printf " str=%x[%d]", $g->object, $g->charpos
527 printf " pos=%d", $g->charpos
529 # For characters, print their resolved level and bidi type
531 printf " blev=%d,btyp=", $g->resolved_level
532 pbiditype $g->bidi_type
534 printf " w=%d a+d=%d+%d", $g->pixel_width, $g->ascent, $g->descent
535 # If not DEFAULT_FACE_ID
536 if ($g->face_id != 0)
537 printf " face=%d", $g->face_id
540 printf " vof=%d", $g->voffset
548 if ($g->glyph_not_available_p)
551 if ($g->overlaps_vertically_p)
554 if ($g->avoid_cursor_p)
557 if ($g->left_box_line_p)
560 if ($g->right_box_line_p)
563 if ($g->slice.img.x || $g->slice.img.y || $g->slice.img.width || $g->slice.img.height)
564 printf " slice=%d,%d,%d,%d" ,$g->slice.img.x, $g->slice.img.y, $g->slice.img.width, $g->slice.img.height
569 Pretty print a glyph structure.
570 Takes one argument, a pointer to a glyph structure.
578 Pretty print glyph structure glyph.
586 Pretty print glyph structure glyph[I].
587 Takes one argument, a integer I.
591 set $pgidx = $pgidx + 1
595 Pretty print next glyph structure.
603 set $used = $row->used[$area]
605 set $gl0 = $row->glyphs[$area]
607 printf "%s: %d glyphs\n", ($area == 0 ? "LEFT" : $area == 2 ? "RIGHT" : "TEXT"), $used
608 while ($pgidx < $used)
609 printf "%3d %4d: ", $pgidx, $xofs
611 set $xofs = $xofs + $gl0[$pgidx]->pixel_width
612 set $pgidx = $pgidx + 1
615 set $area = $area + 1
619 Pretty print all glyphs in a row structure.
620 Takes one argument, a pointer to a row structure.
627 Pretty print all glyphs in row structure row.
634 Pretty print all glyphs in it->glyph_row.
638 printf "edges=(%d,%d),r2l=%d,cont=%d,trunc=(%d,%d),at_zv=%d\n", $arg0->minpos.charpos, $arg0->maxpos.charpos, $arg0->reversed_p, $arg0->continued_p, $arg0->truncated_on_left_p, $arg0->truncated_on_right_p, $arg0->ends_at_zv_p
641 Print important attributes of a glyph_row structure.
642 Takes one argument, a pointer to a glyph_row structure.
648 set $glend = $mtx->rows + $mtx->nrows - 1
658 Print data about glyph rows in a glyph matrix.
659 Takes one argument, a pointer to a glyph_matrix structure.
666 if $type == Lisp_Misc
669 if $type == Lisp_Vectorlike
675 Print the type of $, assuming it is an Emacs Lisp value.
676 If the first type printed is Lisp_Vector or Lisp_Misc,
677 a second line gives the more precise type.
682 set $size = ((struct Lisp_Vector *) $ptr)->size
683 output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size & ~gdb_array_mark_flag
687 Print the size or vector subtype of $.
688 This command assumes that $ is a vector or pseudovector.
693 output (enum Lisp_Misc_Type) (((struct Lisp_Free *) $ptr)->type)
697 Assume that $ is some misc type and print its specific type.
705 Print $ as an Emacs Lisp integer. This gets the sign right.
713 Print the pointer portion of an Emacs Lisp value in $.
718 print (struct Lisp_Marker *) $ptr
721 Print $ as a marker pointer.
722 This command assumes that $ is an Emacs Lisp marker value.
727 print (struct Lisp_Overlay *) $ptr
730 Print $ as a overlay pointer.
731 This command assumes that $ is an Emacs Lisp overlay value.
736 print (struct Lisp_Free *) $ptr
739 Print $ as a misc free-cell pointer.
740 This command assumes that $ is an Emacs Lisp Misc value.
745 print (struct Lisp_Intfwd *) $ptr
748 Print $ as an integer forwarding pointer.
749 This command assumes that $ is an Emacs Lisp Misc value.
754 print (struct Lisp_Boolfwd *) $ptr
757 Print $ as a boolean forwarding pointer.
758 This command assumes that $ is an Emacs Lisp Misc value.
763 print (struct Lisp_Objfwd *) $ptr
766 Print $ as an object forwarding pointer.
767 This command assumes that $ is an Emacs Lisp Misc value.
772 print (struct Lisp_Buffer_Objfwd *) $ptr
775 Print $ as a buffer-local object forwarding pointer.
776 This command assumes that $ is an Emacs Lisp Misc value.
781 print (struct Lisp_Kboard_Objfwd *) $ptr
784 Print $ as a kboard-local object forwarding pointer.
785 This command assumes that $ is an Emacs Lisp Misc value.
790 print (struct Lisp_Buffer_Local_Value *) $ptr
793 Print $ as a buffer-local-value pointer.
794 This command assumes that $ is an Emacs Lisp Misc value.
800 print (struct Lisp_Symbol *) $ptr
805 Print the name and address of the symbol $.
806 This command assumes that $ is an Emacs Lisp symbol value.
811 print (struct Lisp_String *) $ptr
816 Print the contents and address of the string $.
817 This command assumes that $ is an Emacs Lisp string value.
822 print (struct Lisp_Vector *) $ptr
823 output ($->size > 50) ? 0 : ($->contents[0])@($->size & ~gdb_array_mark_flag)
827 Print the contents and address of the vector $.
828 This command assumes that $ is an Emacs Lisp vector value.
833 print (struct Lisp_Process *) $ptr
838 Print the address of the struct Lisp_process to which $ points.
839 This command assumes that $ is a Lisp_Object.
844 print (struct frame *) $ptr
846 set $ptr = (struct Lisp_String *) $ptr
851 Print $ as a frame pointer.
852 This command assumes $ is an Emacs Lisp frame value.
857 print (struct Lisp_Vector *) $ptr
858 output ($->contents[0])@($->size & 0xff)
861 Print $ as a compiled function pointer.
862 This command assumes that $ is an Emacs Lisp compiled value.
867 print (struct window *) $ptr
868 set $window = (struct window *) $ptr
869 xgetint $window->total_cols
871 xgetint $window->total_lines
873 xgetint $window->left_col
875 xgetint $window->top_line
877 printf "%dx%d+%d+%d\n", $width, $height, $left, $top
880 Print $ as a window pointer, assuming it is an Emacs Lisp window value.
881 Print the window's position as "WIDTHxHEIGHT+LEFT+TOP".
886 print (struct save_window_data *) $ptr
889 Print $ as a window configuration pointer.
890 This command assumes that $ is an Emacs Lisp window configuration value.
895 print (struct Lisp_Subr *) $ptr
900 Print the address of the subr which the Lisp_Object $ points to.
905 print (struct Lisp_Char_Table *) $ptr
908 printf " %d extra slots", ($->size & 0x1ff) - 68
912 Print the address of the char-table $, and its purpose.
913 This command assumes that $ is an Emacs Lisp char-table value.
918 print (struct Lisp_Sub_Char_Table *) $ptr
922 printf "Depth: %d, Min char: %d (0x%x)\n", $depth, $int, $int
924 document xsubchartable
925 Print the address of the sub-char-table $, its depth and min-char.
926 This command assumes that $ is an Emacs Lisp sub-char-table value.
931 print (struct Lisp_Bool_Vector *) $ptr
932 output ($->size > 256) ? 0 : ($->data[0])@((($->size & ~gdb_array_mark_flag) + 7)/ 8)
936 Print the contents and address of the bool-vector $.
937 This command assumes that $ is an Emacs Lisp bool-vector value.
942 print (struct buffer *) $ptr
944 output ((struct Lisp_String *) $ptr)->data
948 Set $ as a buffer pointer and the name of the buffer.
949 This command assumes $ is an Emacs Lisp buffer value.
954 print (struct Lisp_Hash_Table *) $ptr
957 Set $ as a hash table pointer.
958 This command assumes that $ is an Emacs Lisp hash table value.
963 print (struct Lisp_Cons *) $ptr
968 Print the contents of $ as an Emacs Lisp cons.
976 Print the contents of the next cell in a list.
977 This command assumes that the last thing you printed was a cons cell contents
978 (type struct Lisp_Cons) or a pointer to one.
983 print/x ($type == Lisp_Cons ? ((struct Lisp_Cons *) $ptr)->car : 0)
986 Assume that $ is an Emacs Lisp pair and print its car.
992 print/x ($type == Lisp_Cons ? ((struct Lisp_Cons *) $ptr)->u.cdr : 0)
995 Assume that $ is an Emacs Lisp pair and print its cdr.
1000 set $cons = (struct Lisp_Cons *) $ptr
1004 while $cons != $nil && $i < 10
1007 xgetptr $cons->u.cdr
1008 set $cons = (struct Lisp_Cons *) $ptr
1020 Print $ assuming it is a list.
1025 print ((struct Lisp_Float *) $ptr)->u.data
1028 Print $ assuming it is a lisp floating-point number.
1033 print (struct scrollbar *) $ptr
1038 Print $ as a scrollbar pointer.
1043 if $type == Lisp_Int
1046 if $type == Lisp_Symbol
1049 if $type == Lisp_String
1052 if $type == Lisp_Cons
1055 if $type == Lisp_Float
1058 if $type == Lisp_Misc
1059 set $misc = (enum Lisp_Misc_Type) (((struct Lisp_Free *) $ptr)->type)
1060 if $misc == Lisp_Misc_Free
1063 if $misc == Lisp_Misc_Boolfwd
1066 if $misc == Lisp_Misc_Marker
1069 if $misc == Lisp_Misc_Intfwd
1072 if $misc == Lisp_Misc_Boolfwd
1075 if $misc == Lisp_Misc_Objfwd
1078 if $misc == Lisp_Misc_Buffer_Objfwd
1081 if $misc == Lisp_Misc_Buffer_Local_Value
1084 # if $misc == Lisp_Misc_Some_Buffer_Local_Value
1087 if $misc == Lisp_Misc_Overlay
1090 if $misc == Lisp_Misc_Kboard_Objfwd
1093 # if $misc == Lisp_Misc_Save_Value
1097 if $type == Lisp_Vectorlike
1098 set $size = ((struct Lisp_Vector *) $ptr)->size
1099 if ($size & PVEC_FLAG)
1100 set $vec = (enum pvec_type) ($size & PVEC_TYPE_MASK)
1101 if $vec == PVEC_NORMAL_VECTOR
1104 if $vec == PVEC_PROCESS
1107 if $vec == PVEC_FRAME
1110 if $vec == PVEC_COMPILED
1113 if $vec == PVEC_WINDOW
1116 if $vec == PVEC_WINDOW_CONFIGURATION
1119 if $vec == PVEC_SUBR
1122 if $vec == PVEC_CHAR_TABLE
1125 if $vec == PVEC_BOOL_VECTOR
1128 if $vec == PVEC_BUFFER
1131 if $vec == PVEC_HASH_TABLE
1140 Print $ as a lisp object of any type.
1144 set $data = (char *) $arg0->data
1145 output ($arg0->size > 1000) ? 0 : ($data[0])@($arg0->size_byte < 0 ? $arg0->size & ~gdb_array_mark_flag : $arg0->size_byte)
1150 set $sym = (struct Lisp_Symbol *) $ptr
1152 set $sym_name = (struct Lisp_String *) $ptr
1156 Print argument as a symbol.
1160 set $tmp = (struct Lisp_Hash_Table *) ((Vcoding_system_hash_table & $valmask) | gdb_data_seg_bits)
1161 set $tmp = (struct Lisp_Vector *) (($tmp->key_and_value & $valmask) | gdb_data_seg_bits)
1162 set $name = $tmp->contents[$arg0 * 2]
1165 print $tmp->contents[$arg0 * 2 + 1]
1169 Print the name and attributes of coding system that has ID (argument).
1173 set $tmp = (struct Lisp_Hash_Table *) ((Vcharset_hash_table & $valmask) | gdb_data_seg_bits)
1174 set $tmp = (struct Lisp_Vector *) (($tmp->key_and_value & $valmask) | gdb_data_seg_bits)
1175 p $tmp->contents[charset_table[$arg0].hash_index * 2]
1179 Print the name of charset that has ID (argument).
1184 set $tbl = (struct Lisp_Char_Table *) $ptr
1186 xgetint $tbl->extras[0]
1187 printf " ID:%d", $int
1188 xgettype $tbl->extras[1]
1189 xgetptr $tbl->extras[1]
1190 if $type == Lisp_String
1191 set $ptr = (struct Lisp_String *) $ptr
1195 xgetptr $tbl->extras[2]
1196 set $ptr = (struct Lisp_Char_Table *) $ptr
1197 xgetptr $ptr->extras[1]
1198 set $ptr = (struct Lisp_String *) $ptr
1199 printf " Realized from:"
1207 set $size = (((struct Lisp_Vector *) $ptr)->size & 0x1FF)
1208 if $size == FONT_SPEC_MAX
1209 print (struct font_spec *) $ptr
1211 if $size == FONT_ENTITY_MAX
1212 print (struct font_entity *) $ptr
1214 print (struct font *) $ptr
1219 Print $ assuming it is a list font (font-spec, font-entity, or font-object).
1223 set $bt = backtrace_list
1225 xgettype (*$bt->function)
1226 if $type == Lisp_Symbol
1227 xprintsym (*$bt->function)
1228 printf " (0x%x)\n", $bt->args
1230 xgetptr *$bt->function
1231 printf "0x%x ", $ptr
1232 if $type == Lisp_Vectorlike
1233 xgetptr (*$bt->function)
1234 set $size = ((struct Lisp_Vector *) $ptr)->size
1235 output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size & ~gdb_array_mark_flag
1237 printf "Lisp type %d", $type
1245 Print a backtrace of Lisp function calls from backtrace_list.
1246 Set a breakpoint at Fsignal and call this to see from where
1247 an error was signaled.
1251 set debug_print (which_symbols ($arg0))
1254 Print symbols which references a given lisp object
1255 either as its symbol value or symbol function.
1259 set $bt = byte_stack_list
1261 xgettype ($bt->byte_string)
1262 printf "0x%x => ", $bt->byte_string
1263 which $bt->byte_string
1268 Print a backtrace of the byte code stack.
1271 # Show Lisp backtrace after normal backtrace.
1272 define hookpost-backtrace
1273 set $bt = backtrace_list
1276 echo Lisp Backtrace:\n
1282 set $tagmask = (((long)1 << gdb_gctypebits) - 1)
1283 set $valmask = gdb_use_lsb ? ~($tagmask) : ((long)1 << gdb_valbits) - 1
1286 When starting Emacs a second time in the same gdb session under
1287 FreeBSD 2.2.5, gdb 4.13, $valmask have lost
1288 their values. (The same happens on current (2000) versions of GNU/Linux
1290 This function reloads them.
1294 # Flush display (X only)
1299 Flush pending X window display updates to screen.
1300 Works only when an inferior emacs is executing.
1308 # Call xreload if a new Emacs executable is loaded.
1314 set print sevenbit-strings
1316 show environment DISPLAY
1317 show environment TERM
1319 # People get bothered when they see messages about non-existent functions...
1320 xgetptr Vsystem_type
1321 # $ptr is NULL in temacs
1323 set $tem = (struct Lisp_Symbol *) $ptr
1325 set $tem = (struct Lisp_String *) $ptr
1326 set $tem = (char *) $tem->data
1328 # Don't let abort actually run, as it will make stdio stop working and
1329 # therefore the `pr' command above as well.
1330 if $tem[0] == 'w' && $tem[1] == 'i' && $tem[2] == 'n' && $tem[3] == 'd'
1331 # The windows-nt build replaces abort with its own function.
1338 # x_error_quitter is defined only on X. But window-system is set up
1339 # only at run time, during Emacs startup, so we need to defer setting
1340 # the breakpoint. init_sys_modes is the first function called on
1341 # every platform after init_display, where window-system is set.
1342 tbreak init_sys_modes
1345 xgetptr Vinitial_window_system
1346 set $tem = (struct Lisp_Symbol *) $ptr
1348 set $tem = (struct Lisp_String *) $ptr
1349 set $tem = (char *) $tem->data
1350 # If we are running in synchronous mode, we want a chance to look
1351 # around before Emacs exits. Perhaps we should put the break
1352 # somewhere else instead...
1353 if $tem[0] == 'x' && $tem[1] == '\0'
1354 break x_error_quitter