1 # Copyright (C) 1992-1998, 2000-2011 Free Software Foundation, Inc.
3 # This file is part of GNU Emacs.
5 # GNU Emacs is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 3, or (at your option)
10 # GNU Emacs is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with GNU Emacs; see the file COPYING. If not, write to the
17 # Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 # Boston, MA 02110-1301, USA.
20 # Force loading of symbols, enough to give us gdb_valbits etc.
22 # With some compilers, we need this to give us struct Lisp_Symbol etc.:
25 # Find lwlib source files too.
27 #dir /gd/gnu/lesstif-0.89.9/lib/Xm
29 # Don't enter GDB when user types C-g to quit.
30 # This has one unfortunate effect: you can't type C-c
31 # at the GDB to stop Emacs, when using X.
32 # However, C-z works just as well in that case.
35 # Make it work like SIGINT normally does.
38 # Pass on user signals
39 handle SIGUSR1 noprint pass
40 handle SIGUSR2 noprint pass
42 # Don't pass SIGALRM to Emacs. This makes problems when
46 # $valmask and $tagmask are mask values set up by the xreload macro below.
48 # Use $bugfix so that the value isn't a constant.
49 # Using a constant runs into GDB bugs sometimes.
52 set $ptr = (gdb_use_union ? (gdb_use_lsb ? $bugfix.u.val << gdb_gctypebits : $bugfix.u.val) : $bugfix & $valmask) | gdb_data_seg_bits
57 set $int = gdb_use_union ? $bugfix.s.val : (gdb_use_lsb ? $bugfix : $bugfix << gdb_gctypebits) >> gdb_gctypebits
62 set $type = gdb_use_union ? $bugfix.s.type : (enum Lisp_Type) (gdb_use_lsb ? $bugfix & $tagmask : $bugfix >> gdb_valbits)
65 # Set up something to print out s-expressions.
66 # We save and restore print_output_debug_flag to prevent the w32 port
67 # from calling OutputDebugString, which causes GDB to display each
68 # character twice (yuk!).
70 set $output_debug = print_output_debug_flag
71 set print_output_debug_flag = 0
73 set print_output_debug_flag = $output_debug
76 Print the emacs s-expression which is $.
77 Works only when an inferior emacs is executing.
80 # Print out s-expressions
83 set $output_debug = print_output_debug_flag
84 set print_output_debug_flag = 0
85 set safe_debug_print ($tmp)
86 set print_output_debug_flag = $output_debug
89 Print the argument as an emacs s-expression
90 Works only when an inferior emacs is executing.
93 # Print out s-expressions from tool bar
96 set $output_debug = print_output_debug_flag
97 set print_output_debug_flag = 0
98 set safe_debug_print ($tmp)
99 set print_output_debug_flag = $output_debug
102 Print the argument as an emacs s-expression.
103 Works only when an inferior emacs is executing.
104 For use on tool bar when debugging in Emacs
105 where the variable name would not otherwise
106 be recorded in the GUD buffer.
109 # Print value of lisp variable
112 set $output_debug = print_output_debug_flag
113 set print_output_debug_flag = 0
114 set safe_debug_print ( find_symbol_value (intern ($tmp)))
115 set print_output_debug_flag = $output_debug
118 Print the value of the lisp variable given as argument.
119 Works only when an inferior emacs is executing.
122 # Print value of lisp variable
125 set $output_debug = print_output_debug_flag
126 set print_output_debug_flag = 0
127 set safe_debug_print (find_symbol_value (intern ($tmp)))
128 set print_output_debug_flag = $output_debug
131 Print the value of the lisp variable given as argument.
132 Works only when an inferior emacs is executing.
133 For use when debugging in Emacs where the variable
134 name would not otherwise be recorded in the GUD buffer.
137 # Print out current buffer point and boundaries
139 set $b = current_buffer
141 printf "BUF PT: %d", $b->pt
142 if ($b->pt != $b->pt_byte)
143 printf "[%d]", $b->pt_byte
145 printf " of 1..%d", $t->z
146 if ($t->z != $t->z_byte)
147 printf "[%d]", $t->z_byte
149 if ($b->begv != 1 || $b->zv != $t->z)
150 printf " NARROW=%d..%d", $b->begv, $b->zv
151 if ($b->begv != $b->begv_byte || $b->zv != $b->zv_byte)
152 printf " [%d..%d]", $b->begv_byte, $b->zv_byte
155 printf " GAP: %d", $t->gpt
156 if ($t->gpt != $t->gpt_byte)
157 printf "[%d]", $t->gpt_byte
159 printf " SZ=%d\n", $t->gap_size
162 Print current buffer's point and boundaries.
163 Prints values of point, beg, end, narrow, and gap for current buffer.
167 set $itmethod = $arg0
170 printf "GET_FROM_BUFFER"
173 printf "GET_FROM_DISPLAY_VECTOR"
176 printf "GET_FROM_STRING"
179 printf "GET_FROM_C_STRING"
182 printf "GET_FROM_IMAGE"
185 printf "GET_FROM_STRETCH"
187 if ($itmethod < 0 || $itmethod > 5)
192 Pretty print it->method given as first arg
195 # Print out iterator given as first arg
198 printf "cur=%d", $it->current.pos.charpos
199 if ($it->current.pos.charpos != $it->current.pos.bytepos)
200 printf "[%d]", $it->current.pos.bytepos
202 printf " pos=%d", $it->position.charpos
203 if ($it->position.charpos != $it->position.bytepos)
204 printf "[%d]", $it->position.bytepos
206 printf " start=%d", $it->start.pos.charpos
207 if ($it->start.pos.charpos != $it->start.pos.bytepos)
208 printf "[%d]", $it->start.pos.bytepos
210 printf " end=%d", $it->end_charpos
211 printf " stop=%d", $it->stop_charpos
212 printf " face=%d", $it->face_id
213 if ($it->multibyte_p)
216 if ($it->header_line_p)
219 if ($it->n_overlay_strings > 0)
220 printf " nov=%d", $it->n_overlay_strings
223 printf " sp=%d", $it->sp
227 if ($it->len == 1 && $it->c >= ' ' && it->c < 255)
228 printf " ch='%c'", $it->c
230 printf " ch=[%d,%d]", $it->c, $it->len
236 printf "IT_CHARACTER"
239 printf "IT_COMPOSITION"
251 printf "IT_TRUNCATION"
254 printf "IT_CONTINUATION"
256 if ($it->what < 0 || $it->what > 6)
260 if ($it->method != 0)
263 pitmethod $it->method
264 if ($it->method == 2)
266 printf "[%d]", $it->current.string_pos.charpos
268 if ($it->method == 4)
270 printf "[%d]", $it->image_id
275 printf "BIDI: base_stop=%d prev_stop=%d level=%d\n", $it->base_level_stop, $it->prev_stop, $it->bidi_it.resolved_level
277 if ($it->region_beg_charpos >= 0)
278 printf "reg=%d-%d ", $it->region_beg_charpos, $it->region_end_charpos
280 printf "vpos=%d hpos=%d", $it->vpos, $it->hpos,
281 printf " y=%d lvy=%d", $it->current_y, $it->last_visible_y
282 printf " x=%d vx=%d-%d", $it->current_x, $it->first_visible_x, $it->last_visible_x
283 printf " w=%d", $it->pixel_width
284 printf " a+d=%d+%d=%d", $it->ascent, $it->descent, $it->ascent+$it->descent
285 printf " max=%d+%d=%d", $it->max_ascent, $it->max_descent, $it->max_ascent+$it->max_descent
288 while ($i < $it->sp && $i < 4)
289 set $e = $it->stack[$i]
290 printf "stack[%d]: ", $i
292 printf "[%d]", $e->position.charpos
298 Pretty print a display iterator.
299 Take one arg, an iterator object or pointer.
306 Pretty print the display iterator it.
311 printf "y=%d x=%d pwid=%d", $row->y, $row->x, $row->pixel_width
312 printf " a+d=%d+%d=%d", $row->ascent, $row->height-$row->ascent, $row->height
313 printf " phys=%d+%d=%d", $row->phys_ascent, $row->phys_height-$row->phys_ascent, $row->phys_height
314 printf " vis=%d", $row->visible_height
315 printf " L=%d T=%d R=%d", $row->used[0], $row->used[1], $row->used[2]
317 printf "start=%d end=%d", $row->start.pos.charpos, $row->end.pos.charpos
321 if ($row->displays_text_p)
324 if ($row->mode_line_p)
327 if ($row->continued_p)
330 if ($row-> truncated_on_left_p)
333 if ($row-> truncated_on_right_p)
336 if ($row->starts_in_middle_of_char_p)
339 if ($row->ends_in_middle_of_char_p)
342 if ($row->ends_in_newline_from_string_p)
345 if ($row->ends_at_zv_p)
348 if ($row->overlapped_p)
351 if ($row->overlapping_p)
357 Pretty print information about glyph_row.
358 Takes one argument, a row object or pointer.
365 Pretty print information about glyph_row in row.
371 printf "y=%d x=%d vpos=%d hpos=%d", $cp->y, $cp->x, $cp->vpos, $cp->hpos
374 Pretty print a window cursor.
379 pcursorx output_cursor
383 Pretty print the output_cursor.
388 xgetint $w->sequence_number
389 if ($w->mini_p != Qnil)
392 printf "Window %d ", $int
394 set $tem = (struct buffer *) $ptr
396 printf "%s", ((struct Lisp_String *) $ptr)->data
399 set $tem = (struct Lisp_Marker *) $ptr
400 printf "start=%d end:", $tem->charpos
401 if ($w->window_end_valid != Qnil)
402 xgetint $w->window_end_pos
403 printf "pos=%d", $int
404 xgetint $w->window_end_vpos
405 printf " vpos=%d", $int
409 printf " vscroll=%d", $w->vscroll
410 if ($w->force_start != Qnil)
411 printf " FORCE_START"
413 if ($w->must_be_updated_p)
420 pcursorx $w->phys_cursor
421 if ($w->phys_cursor_on_p)
427 if ($w->last_cursor_off_p != $w->cursor_off_p)
428 if ($w->last_cursor_off_p)
434 if ($w->cursor_off_p)
442 Pretty print a window structure.
443 Takes one argument, a pointer to a window structure.
450 Pretty print window structure w.
475 if ($arg0 < 0 || $arg0 > 6)
480 Print textual description of bidi type given as first argument.
487 if ($g.u.ch >= ' ' && $g.u.ch < 127)
488 printf "CHAR[%c]", $g.u.ch
490 printf "CHAR[0x%x]", $g.u.ch
495 printf "COMP[%d (%d..%d)]", $g.u.cmp.id, $g.slice.cmp.from, $g.slice.cmp.to
500 if ($g.u.glyphless.method == 0)
503 if ($g.u.glyphless.method == 1)
506 if ($g.u.glyphless.method == 2)
509 if ($g.u.glyphless.method == 3)
515 printf "IMAGE[%d]", $g.u.img_id
519 printf "STRETCH[%d+%d]", $g.u.stretch.height, $g.u.stretch.ascent
522 if ($type == Lisp_String)
523 printf " str=%x[%d]", $g.object, $g.charpos
525 printf " pos=%d", $g.charpos
527 # For characters, print their resolved level and bidi type
529 printf " blev=%d,btyp=", $g.resolved_level
530 pbiditype $g.bidi_type
532 printf " w=%d a+d=%d+%d", $g.pixel_width, $g.ascent, $g.descent
533 # If not DEFAULT_FACE_ID
535 printf " face=%d", $g.face_id
538 printf " vof=%d", $g.voffset
546 if ($g.glyph_not_available_p)
549 if ($g.overlaps_vertically_p)
552 if ($g.avoid_cursor_p)
555 if ($g.left_box_line_p)
558 if ($g.right_box_line_p)
561 if ($g.slice.img.x || $g.slice.img.y || $g.slice.img.width || $g.slice.img.height)
562 printf " slice=%d,%d,%d,%d" ,$g.slice.img.x, $g.slice.img.y, $g.slice.img.width, $g.slice.img.height
567 Pretty print a glyph structure.
568 Takes one argument, a pointer to a glyph structure.
576 Pretty print glyph structure glyph.
584 Pretty print glyph structure glyph[I].
585 Takes one argument, a integer I.
589 set $pgidx = $pgidx + 1
593 Pretty print next glyph structure.
601 set $used = $row->used[$area]
603 set $gl0 = $row->glyphs[$area]
605 printf "%s: %d glyphs\n", ($area == 0 ? "LEFT" : $area == 2 ? "RIGHT" : "TEXT"), $used
606 while ($pgidx < $used)
607 printf "%3d %4d: ", $pgidx, $xofs
609 set $xofs = $xofs + $gl0[$pgidx]->pixel_width
610 set $pgidx = $pgidx + 1
613 set $area = $area + 1
617 Pretty print all glyphs in a row structure.
618 Takes one argument, a pointer to a row structure.
625 Pretty print all glyphs in row structure row.
632 Pretty print all glyphs in it->glyph_row.
636 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
639 Print important attributes of a glyph_row structure.
640 Takes one argument, a pointer to a glyph_row structure.
646 set $glend = $mtx->rows + $mtx->nrows - 1
656 Print data about glyph rows in a glyph matrix.
657 Takes one argument, a pointer to a glyph_matrix structure.
664 if $type == Lisp_Misc
667 if $type == Lisp_Vectorlike
673 Print the type of $, assuming it is an Emacs Lisp value.
674 If the first type printed is Lisp_Vector or Lisp_Misc,
675 a second line gives the more precise type.
680 set $size = ((struct Lisp_Vector *) $ptr)->header.size
681 output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size & ~gdb_array_mark_flag
685 Print the size or vector subtype of $.
686 This command assumes that $ is a vector or pseudovector.
691 output (enum Lisp_Misc_Type) (((struct Lisp_Free *) $ptr)->type)
695 Assume that $ is some misc type and print its specific type.
703 Print $ as an Emacs Lisp integer. This gets the sign right.
711 Print the pointer portion of an Emacs Lisp value in $.
716 print (struct Lisp_Marker *) $ptr
719 Print $ as a marker pointer.
720 This command assumes that $ is an Emacs Lisp marker value.
725 print (struct Lisp_Overlay *) $ptr
728 Print $ as a overlay pointer.
729 This command assumes that $ is an Emacs Lisp overlay value.
734 print (struct Lisp_Free *) $ptr
737 Print $ as a misc free-cell pointer.
738 This command assumes that $ is an Emacs Lisp Misc value.
743 print (struct Lisp_Intfwd *) $ptr
746 Print $ as an integer forwarding pointer.
747 This command assumes that $ is an Emacs Lisp Misc value.
752 print (struct Lisp_Boolfwd *) $ptr
755 Print $ as a boolean forwarding pointer.
756 This command assumes that $ is an Emacs Lisp Misc value.
761 print (struct Lisp_Objfwd *) $ptr
764 Print $ as an object forwarding pointer.
765 This command assumes that $ is an Emacs Lisp Misc value.
770 print (struct Lisp_Buffer_Objfwd *) $ptr
773 Print $ as a buffer-local object forwarding pointer.
774 This command assumes that $ is an Emacs Lisp Misc value.
779 print (struct Lisp_Kboard_Objfwd *) $ptr
782 Print $ as a kboard-local object forwarding pointer.
783 This command assumes that $ is an Emacs Lisp Misc value.
788 print (struct Lisp_Buffer_Local_Value *) $ptr
791 Print $ as a buffer-local-value pointer.
792 This command assumes that $ is an Emacs Lisp Misc value.
798 print (struct Lisp_Symbol *) $ptr
803 Print the name and address of the symbol $.
804 This command assumes that $ is an Emacs Lisp symbol value.
809 print (struct Lisp_String *) $ptr
814 Print the contents and address of the string $.
815 This command assumes that $ is an Emacs Lisp string value.
820 print (struct Lisp_Vector *) $ptr
821 output ($->header.size > 50) ? 0 : ($->contents[0])@($->header.size & ~gdb_array_mark_flag)
825 Print the contents and address of the vector $.
826 This command assumes that $ is an Emacs Lisp vector value.
831 print (struct Lisp_Process *) $ptr
836 Print the address of the struct Lisp_process to which $ points.
837 This command assumes that $ is a Lisp_Object.
842 print (struct frame *) $ptr
844 set $ptr = (struct Lisp_String *) $ptr
849 Print $ as a frame pointer.
850 This command assumes $ is an Emacs Lisp frame value.
855 print (struct Lisp_Vector *) $ptr
856 output ($->contents[0])@($->header.size & 0xff)
859 Print $ as a compiled function pointer.
860 This command assumes that $ is an Emacs Lisp compiled value.
865 print (struct window *) $ptr
866 set $window = (struct window *) $ptr
867 xgetint $window->total_cols
869 xgetint $window->total_lines
871 xgetint $window->left_col
873 xgetint $window->top_line
875 printf "%dx%d+%d+%d\n", $width, $height, $left, $top
878 Print $ as a window pointer, assuming it is an Emacs Lisp window value.
879 Print the window's position as "WIDTHxHEIGHT+LEFT+TOP".
884 print (struct save_window_data *) $ptr
887 Print $ as a window configuration pointer.
888 This command assumes that $ is an Emacs Lisp window configuration value.
893 print (struct Lisp_Subr *) $ptr
898 Print the address of the subr which the Lisp_Object $ points to.
903 print (struct Lisp_Char_Table *) $ptr
906 printf " %d extra slots", ($->header.size & 0x1ff) - 68
910 Print the address of the char-table $, and its purpose.
911 This command assumes that $ is an Emacs Lisp char-table value.
916 print (struct Lisp_Sub_Char_Table *) $ptr
920 printf "Depth: %d, Min char: %d (0x%x)\n", $depth, $int, $int
922 document xsubchartable
923 Print the address of the sub-char-table $, its depth and min-char.
924 This command assumes that $ is an Emacs Lisp sub-char-table value.
929 print (struct Lisp_Bool_Vector *) $ptr
930 output ($->header.size > 256) ? 0 : ($->data[0])@((($->header.size & ~gdb_array_mark_flag) + 7)/ 8)
934 Print the contents and address of the bool-vector $.
935 This command assumes that $ is an Emacs Lisp bool-vector value.
940 print (struct buffer *) $ptr
942 output ((struct Lisp_String *) $ptr)->data
946 Set $ as a buffer pointer and the name of the buffer.
947 This command assumes $ is an Emacs Lisp buffer value.
952 print (struct Lisp_Hash_Table *) $ptr
955 Set $ as a hash table pointer.
956 This command assumes that $ is an Emacs Lisp hash table value.
961 print (struct Lisp_Cons *) $ptr
966 Print the contents of $ as an Emacs Lisp cons.
974 Print the contents of the next cell in a list.
975 This command assumes that the last thing you printed was a cons cell contents
976 (type struct Lisp_Cons) or a pointer to one.
981 print/x ($type == Lisp_Cons ? ((struct Lisp_Cons *) $ptr)->car : 0)
984 Assume that $ is an Emacs Lisp pair and print its car.
990 print/x ($type == Lisp_Cons ? ((struct Lisp_Cons *) $ptr)->u.cdr : 0)
993 Assume that $ is an Emacs Lisp pair and print its cdr.
998 set $cons = (struct Lisp_Cons *) $ptr
1002 while $cons != $nil && $i < 10
1005 xgetptr $cons->u.cdr
1006 set $cons = (struct Lisp_Cons *) $ptr
1018 Print $ assuming it is a list.
1023 print ((struct Lisp_Float *) $ptr)->u.data
1026 Print $ assuming it is a lisp floating-point number.
1031 print (struct scrollbar *) $ptr
1036 Print $ as a scrollbar pointer.
1041 if $type == Lisp_Int
1044 if $type == Lisp_Symbol
1047 if $type == Lisp_String
1050 if $type == Lisp_Cons
1053 if $type == Lisp_Float
1056 if $type == Lisp_Misc
1057 set $misc = (enum Lisp_Misc_Type) (((struct Lisp_Free *) $ptr)->type)
1058 if $misc == Lisp_Misc_Free
1061 if $misc == Lisp_Misc_Boolfwd
1064 if $misc == Lisp_Misc_Marker
1067 if $misc == Lisp_Misc_Intfwd
1070 if $misc == Lisp_Misc_Boolfwd
1073 if $misc == Lisp_Misc_Objfwd
1076 if $misc == Lisp_Misc_Buffer_Objfwd
1079 if $misc == Lisp_Misc_Buffer_Local_Value
1082 # if $misc == Lisp_Misc_Some_Buffer_Local_Value
1085 if $misc == Lisp_Misc_Overlay
1088 if $misc == Lisp_Misc_Kboard_Objfwd
1091 # if $misc == Lisp_Misc_Save_Value
1095 if $type == Lisp_Vectorlike
1096 set $size = ((struct Lisp_Vector *) $ptr)->header.size
1097 if ($size & PVEC_FLAG)
1098 set $vec = (enum pvec_type) ($size & PVEC_TYPE_MASK)
1099 if $vec == PVEC_NORMAL_VECTOR
1102 if $vec == PVEC_PROCESS
1105 if $vec == PVEC_FRAME
1108 if $vec == PVEC_COMPILED
1111 if $vec == PVEC_WINDOW
1114 if $vec == PVEC_WINDOW_CONFIGURATION
1117 if $vec == PVEC_SUBR
1120 if $vec == PVEC_CHAR_TABLE
1123 if $vec == PVEC_BOOL_VECTOR
1126 if $vec == PVEC_BUFFER
1129 if $vec == PVEC_HASH_TABLE
1138 Print $ as a lisp object of any type.
1142 set $data = (char *) $arg0->data
1143 output ($arg0->size > 1000) ? 0 : ($data[0])@($arg0->size_byte < 0 ? $arg0->size & ~gdb_array_mark_flag : $arg0->size_byte)
1148 set $sym = (struct Lisp_Symbol *) $ptr
1150 set $sym_name = (struct Lisp_String *) $ptr
1154 Print argument as a symbol.
1158 set $tmp = (struct Lisp_Hash_Table *) ((Vcoding_system_hash_table & $valmask) | gdb_data_seg_bits)
1159 set $tmp = (struct Lisp_Vector *) (($tmp->key_and_value & $valmask) | gdb_data_seg_bits)
1160 set $name = $tmp->contents[$arg0 * 2]
1163 print $tmp->contents[$arg0 * 2 + 1]
1167 Print the name and attributes of coding system that has ID (argument).
1171 set $tmp = (struct Lisp_Hash_Table *) ((Vcharset_hash_table & $valmask) | gdb_data_seg_bits)
1172 set $tmp = (struct Lisp_Vector *) (($tmp->key_and_value & $valmask) | gdb_data_seg_bits)
1173 p $tmp->contents[charset_table[$arg0].hash_index * 2]
1177 Print the name of charset that has ID (argument).
1182 set $tbl = (struct Lisp_Char_Table *) $ptr
1184 xgetint $tbl->extras[0]
1185 printf " ID:%d", $int
1186 xgettype $tbl->extras[1]
1187 xgetptr $tbl->extras[1]
1188 if $type == Lisp_String
1189 set $ptr = (struct Lisp_String *) $ptr
1193 xgetptr $tbl->extras[2]
1194 set $ptr = (struct Lisp_Char_Table *) $ptr
1195 xgetptr $ptr->extras[1]
1196 set $ptr = (struct Lisp_String *) $ptr
1197 printf " Realized from:"
1205 set $size = (((struct Lisp_Vector *) $ptr)->header.size & 0x1FF)
1206 if $size == FONT_SPEC_MAX
1207 print (struct font_spec *) $ptr
1209 if $size == FONT_ENTITY_MAX
1210 print (struct font_entity *) $ptr
1212 print (struct font *) $ptr
1217 Print $ assuming it is a list font (font-spec, font-entity, or font-object).
1221 set $bt = backtrace_list
1223 xgettype (*$bt->function)
1224 if $type == Lisp_Symbol
1225 xprintsym (*$bt->function)
1226 printf " (0x%x)\n", $bt->args
1228 xgetptr *$bt->function
1229 printf "0x%x ", $ptr
1230 if $type == Lisp_Vectorlike
1231 xgetptr (*$bt->function)
1232 set $size = ((struct Lisp_Vector *) $ptr)->header.size
1233 output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size & ~gdb_array_mark_flag
1235 printf "Lisp type %d", $type
1243 Print a backtrace of Lisp function calls from backtrace_list.
1244 Set a breakpoint at Fsignal and call this to see from where
1245 an error was signaled.
1249 set debug_print (which_symbols ($arg0))
1252 Print symbols which references a given lisp object
1253 either as its symbol value or symbol function.
1257 set $bt = byte_stack_list
1259 xgettype ($bt->byte_string)
1260 printf "0x%x => ", $bt->byte_string
1261 which $bt->byte_string
1266 Print a backtrace of the byte code stack.
1269 # Show Lisp backtrace after normal backtrace.
1270 define hookpost-backtrace
1271 set $bt = backtrace_list
1274 echo Lisp Backtrace:\n
1280 set $tagmask = (((long)1 << gdb_gctypebits) - 1)
1281 set $valmask = gdb_use_lsb ? ~($tagmask) : ((long)1 << gdb_valbits) - 1
1284 When starting Emacs a second time in the same gdb session under
1285 FreeBSD 2.2.5, gdb 4.13, $valmask have lost
1286 their values. (The same happens on current (2000) versions of GNU/Linux
1288 This function reloads them.
1292 # Flush display (X only)
1297 Flush pending X window display updates to screen.
1298 Works only when an inferior emacs is executing.
1306 # Call xreload if a new Emacs executable is loaded.
1312 set print sevenbit-strings
1314 show environment DISPLAY
1315 show environment TERM
1317 # People get bothered when they see messages about non-existent functions...
1318 xgetptr globals.f_Vsystem_type
1319 # $ptr is NULL in temacs
1321 set $tem = (struct Lisp_Symbol *) $ptr
1323 set $tem = (struct Lisp_String *) $ptr
1324 set $tem = (char *) $tem->data
1326 # Don't let abort actually run, as it will make stdio stop working and
1327 # therefore the `pr' command above as well.
1328 if $tem[0] == 'w' && $tem[1] == 'i' && $tem[2] == 'n' && $tem[3] == 'd'
1329 # The windows-nt build replaces abort with its own function.
1336 # x_error_quitter is defined only on X. But window-system is set up
1337 # only at run time, during Emacs startup, so we need to defer setting
1338 # the breakpoint. init_sys_modes is the first function called on
1339 # every platform after init_display, where window-system is set.
1340 tbreak init_sys_modes
1343 xgetptr globals.f_Vinitial_window_system
1344 set $tem = (struct Lisp_Symbol *) $ptr
1346 set $tem = (struct Lisp_String *) $ptr
1347 set $tem = (char *) $tem->data
1348 # If we are running in synchronous mode, we want a chance to look
1349 # around before Emacs exits. Perhaps we should put the break
1350 # somewhere else instead...
1351 if $tem[0] == 'x' && $tem[1] == '\0'
1352 break x_error_quitter