]> code.delx.au - gnu-emacs/blob - src/.gdbinit
*** empty log message ***
[gnu-emacs] / src / .gdbinit
1 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001,
2 # 2004, 2005, 2006 Free Software Foundation, Inc.
3 #
4 # This file is part of GNU Emacs.
5 #
6 # GNU Emacs is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2, or (at your option)
9 # any later version.
10 #
11 # GNU Emacs is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with GNU Emacs; see the file COPYING. If not, write to the
18 # Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 # Boston, MA 02110-1301, USA.
20
21 # Force loading of symbols, enough to give us gdb_valbits etc.
22 set main
23
24 # Find lwlib source files too.
25 dir ../lwlib
26 #dir /gd/gnu/lesstif-0.89.9/lib/Xm
27
28 # Don't enter GDB when user types C-g to quit.
29 # This has one unfortunate effect: you can't type C-c
30 # at the GDB to stop Emacs, when using X.
31 # However, C-z works just as well in that case.
32 handle 2 noprint pass
33
34 # Make it work like SIGINT normally does.
35 handle SIGTSTP nopass
36
37 # Don't pass SIGALRM to Emacs. This makes problems when
38 # debugging.
39 handle SIGALRM ignore
40
41 # $valmask and $tagmask are mask values set up by the xreload macro below.
42
43 # Use $bugfix so that the value isn't a constant.
44 # Using a constant runs into GDB bugs sometimes.
45 define xgetptr
46 set $bugfix = $arg0
47 set $ptr = (gdb_use_union ? $bugfix.u.val : $bugfix & $valmask) | gdb_data_seg_bits
48 end
49
50 define xgetint
51 set $bugfix = $arg0
52 set $int = gdb_use_union ? $bugfix.s.val : (gdb_use_lsb ? $bugfix : $bugfix << gdb_gctypebits) >> gdb_gctypebits
53 end
54
55 define xgettype
56 set $bugfix = $arg0
57 set $type = gdb_use_union ? $bugfix.s.type : (enum Lisp_Type) (gdb_use_lsb ? $bugfix & $tagmask : $bugfix >> gdb_valbits)
58 end
59
60 # Set up something to print out s-expressions.
61 # We save and restore print_output_debug_flag to prevent the w32 port
62 # from calling OutputDebugString, which causes GDB to display each
63 # character twice (yuk!).
64 define pr
65 set $output_debug = print_output_debug_flag
66 set print_output_debug_flag = 0
67 set debug_print ($)
68 set print_output_debug_flag = $output_debug
69 end
70 document pr
71 Print the emacs s-expression which is $.
72 Works only when an inferior emacs is executing.
73 end
74
75 # Print out s-expressions
76 define pp
77 set $tmp = $arg0
78 set $output_debug = print_output_debug_flag
79 set print_output_debug_flag = 0
80 set safe_debug_print ($tmp)
81 set print_output_debug_flag = $output_debug
82 end
83 document pp
84 Print the argument as an emacs s-expression
85 Works only when an inferior emacs is executing.
86 end
87
88 # Print out s-expressions from tool bar
89 define pp1
90 set $tmp = $arg0
91 set $output_debug = print_output_debug_flag
92 set print_output_debug_flag = 0
93 set safe_debug_print ($tmp)
94 set print_output_debug_flag = $output_debug
95 end
96 document pp1
97 Print the argument as an emacs s-expression.
98 Works only when an inferior emacs is executing.
99 For use on tool bar when debugging in Emacs
100 where the variable name would not otherwise
101 be recorded in the GUD buffer.
102 end
103
104 # Print value of lisp variable
105 define pv
106 set $tmp = "$arg0"
107 set $output_debug = print_output_debug_flag
108 set print_output_debug_flag = 0
109 set safe_debug_print ( find_symbol_value (intern ($tmp)))
110 set print_output_debug_flag = $output_debug
111 end
112 document pv
113 Print the value of the lisp variable given as argument.
114 Works only when an inferior emacs is executing.
115 end
116
117 # Print value of lisp variable
118 define pv1
119 set $tmp = "$arg0"
120 set $output_debug = print_output_debug_flag
121 set print_output_debug_flag = 0
122 set safe_debug_print (find_symbol_value (intern ($tmp)))
123 set print_output_debug_flag = $output_debug
124 end
125 document pv1
126 Print the value of the lisp variable given as argument.
127 Works only when an inferior emacs is executing.
128 For use when debugging in Emacs where the variable
129 name would not otherwise be recorded in the GUD buffer.
130 end
131
132 # Print out current buffer point and boundaries
133 define ppt
134 set $b = current_buffer
135 set $t = $b->text
136 printf "BUF PT: %d", $b->pt
137 if ($b->pt != $b->pt_byte)
138 printf "[%d]", $b->pt_byte
139 end
140 printf " of 1..%d", $t->z
141 if ($t->z != $t->z_byte)
142 printf "[%d]", $t->z_byte
143 end
144 if ($b->begv != 1 || $b->zv != $t->z)
145 printf " NARROW=%d..%d", $b->begv, $b->zv
146 if ($b->begv != $b->begv_byte || $b->zv != $b->zv_byte)
147 printf " [%d..%d]", $b->begv_byte, $b->zv_byte
148 end
149 end
150 printf " GAP: %d", $t->gpt
151 if ($t->gpt != $t->gpt_byte)
152 printf "[%d]", $t->gpt_byte
153 end
154 printf " SZ=%d\n", $t->gap_size
155 end
156 document ppt
157 Print point, beg, end, narrow, and gap for current buffer.
158 end
159
160 # Print out iterator given as first arg
161 define pitx
162 set $it = $arg0
163 printf "cur=%d", $it->current.pos.charpos
164 if ($it->current.pos.charpos != $it->current.pos.bytepos)
165 printf "[%d]", $it->current.pos.bytepos
166 end
167 printf " start=%d", $it->start.pos.charpos
168 if ($it->start.pos.charpos != $it->start.pos.bytepos)
169 printf "[%d]", $it->start.pos.bytepos
170 end
171 printf " end=%d", $it->end_charpos
172 printf " stop=%d", $it->stop_charpos
173 printf " face=%d", $it->face_id
174 if ($it->multibyte_p)
175 printf " MB"
176 end
177 if ($it->header_line_p)
178 printf " HL"
179 end
180 if ($it->n_overlay_strings > 0)
181 printf " nov=%d", $it->n_overlay_strings
182 end
183 if ($it->sp != 0)
184 printf " sp=%d", $it->sp
185 end
186 if ($it->what == IT_CHARACTER)
187 if ($it->len == 1 && $it->c >= ' ' && it->c < 255)
188 printf " ch='%c'", $it->c
189 else
190 printf " ch=[%d,%d]", $it->c, $it->len
191 end
192 else
193 if ($it->what == IT_IMAGE)
194 printf " IMAGE=%d", $it->image_id
195 else
196 printf " "
197 output $it->what
198 end
199 end
200 if ($it->method != GET_FROM_BUFFER)
201 printf " next="
202 output $it->method
203 if ($it->method == GET_FROM_STRING)
204 printf "[%d]", $it->current.string_pos.charpos
205 end
206 end
207 printf "\n"
208 if ($it->region_beg_charpos >= 0)
209 printf "reg=%d-%d ", $it->region_beg_charpos, $it->region_end_charpos
210 end
211 printf "vpos=%d hpos=%d", $it->vpos, $it->hpos,
212 printf " y=%d lvy=%d", $it->current_y, $it->last_visible_y
213 printf " x=%d vx=%d-%d", $it->current_x, $it->first_visible_x, $it->last_visible_x
214 printf " a+d=%d+%d=%d", $it->ascent, $it->descent, $it->ascent+$it->descent
215 printf " max=%d+%d=%d", $it->max_ascent, $it->max_descent, $it->max_ascent+$it->max_descent
216 printf "\n"
217 end
218 document pitx
219 Pretty print a display iterator.
220 Take one arg, an iterator object or pointer.
221 end
222
223 define pit
224 pitx it
225 end
226 document pit
227 Pretty print the display iterator it.
228 end
229
230 define prowx
231 set $row = $arg0
232 printf "y=%d x=%d pwid=%d", $row->y, $row->x, $row->pixel_width
233 printf " a+d=%d+%d=%d", $row->ascent, $row->height-$row->ascent, $row->height
234 printf " phys=%d+%d=%d", $row->phys_ascent, $row->phys_height-$row->phys_ascent, $row->phys_height
235 printf " vis=%d", $row->visible_height
236 printf " L=%d T=%d R=%d", $row->used[0], $row->used[1], $row->used[2]
237 printf "\n"
238 printf "start=%d end=%d", $row->start.pos.charpos, $row->end.pos.charpos
239 if ($row->enabled_p)
240 printf " ENA"
241 end
242 if ($row->displays_text_p)
243 printf " DISP"
244 end
245 if ($row->mode_line_p)
246 printf " MODEL"
247 end
248 if ($row->continued_p)
249 printf " CONT"
250 end
251 if ($row-> truncated_on_left_p)
252 printf " TRUNC:L"
253 end
254 if ($row-> truncated_on_right_p)
255 printf " TRUNC:R"
256 end
257 if ($row->starts_in_middle_of_char_p)
258 printf " STARTMID"
259 end
260 if ($row->ends_in_middle_of_char_p)
261 printf " ENDMID"
262 end
263 if ($row->ends_in_newline_from_string_p)
264 printf " ENDNLFS"
265 end
266 if ($row->ends_at_zv_p)
267 printf " ENDZV"
268 end
269 if ($row->overlapped_p)
270 printf " OLAPD"
271 end
272 if ($row->overlapping_p)
273 printf " OLAPNG"
274 end
275 printf "\n"
276 end
277 document prowx
278 Pretty print information about glyph_row.
279 Takes one argument, a row object or pointer.
280 end
281
282 define prow
283 prowx row
284 end
285 document prow
286 Pretty print information about glyph_row in row.
287 end
288
289
290 define pcursorx
291 set $cp = $arg0
292 printf "y=%d x=%d vpos=%d hpos=%d", $cp->y, $cp->x, $cp->vpos, $cp->hpos
293 end
294 document pcursorx
295 Pretty print a window cursor
296 end
297
298 define pcursor
299 printf "output: "
300 pcursorx output_cursor
301 printf "\n"
302 end
303 document pcursor
304 Pretty print the output_cursor
305 end
306
307 define pwinx
308 set $w = $arg0
309 xgetint $w->sequence_number
310 if ($w->mini_p != Qnil)
311 printf "Mini "
312 end
313 printf "Window %d ", $int
314 xgetptr $w->buffer
315 set $tem = (struct buffer *) $ptr
316 xgetptr $tem->name
317 printf "%s", ((struct Lisp_String *) $ptr)->data
318 printf "\n"
319 xgetptr $w->start
320 set $tem = (struct Lisp_Marker *) $ptr
321 printf "start=%d end:", $tem->charpos
322 if ($w->window_end_valid != Qnil)
323 xgetint $w->window_end_pos
324 printf "pos=%d", $int
325 xgetint $w->window_end_vpos
326 printf " vpos=%d", $int
327 else
328 printf "invalid"
329 end
330 printf " vscroll=%d", $w->vscroll
331 if ($w->force_start != Qnil)
332 printf " FORCE_START"
333 end
334 if ($w->must_be_updated_p)
335 printf " MUST_UPD"
336 end
337 printf "\n"
338 printf "cursor: "
339 pcursorx $w->cursor
340 printf " phys: "
341 pcursorx $w->phys_cursor
342 if ($w->phys_cursor_on_p)
343 printf " ON"
344 else
345 printf " OFF"
346 end
347 printf " blk="
348 if ($w->last_cursor_off_p != $w->cursor_off_p)
349 if ($w->last_cursor_off_p)
350 printf "ON->"
351 else
352 printf "OFF->"
353 end
354 end
355 if ($w->cursor_off_p)
356 printf "ON"
357 else
358 printf "OFF"
359 end
360 printf "\n"
361 end
362 document pwinx
363 Pretty print a window structure.
364 Takes one argument, a pointer to a window structure
365 end
366
367 define pwin
368 pwinx w
369 end
370 document pwin
371 Pretty print window structure w.
372 end
373
374
375 define xtype
376 xgettype $
377 output $type
378 echo \n
379 if $type == Lisp_Misc
380 xmisctype
381 else
382 if $type == Lisp_Vectorlike
383 xvectype
384 end
385 end
386 end
387 document xtype
388 Print the type of $, assuming it is an Emacs Lisp value.
389 If the first type printed is Lisp_Vector or Lisp_Misc,
390 a second line gives the more precise type.
391 end
392
393 define xvectype
394 xgetptr $
395 set $size = ((struct Lisp_Vector *) $ptr)->size
396 output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size & ~gdb_array_mark_flag
397 echo \n
398 end
399 document xvectype
400 Print the size or vector subtype of $, assuming it is a vector or pseudovector.
401 end
402
403 define xmisctype
404 xgetptr $
405 output (enum Lisp_Misc_Type) (((struct Lisp_Free *) $ptr)->type)
406 echo \n
407 end
408 document xmisctype
409 Print the specific type of $, assuming it is some misc type.
410 end
411
412 define xint
413 xgetint $
414 print $int
415 end
416 document xint
417 Print $, assuming it is an Emacs Lisp integer. This gets the sign right.
418 end
419
420 define xptr
421 xgetptr $
422 print (void *) $ptr
423 end
424 document xptr
425 Print the pointer portion of $, assuming it is an Emacs Lisp value.
426 end
427
428 define xmarker
429 xgetptr $
430 print (struct Lisp_Marker *) $ptr
431 end
432 document xmarker
433 Print $ as a marker pointer, assuming it is an Emacs Lisp marker value.
434 end
435
436 define xoverlay
437 xgetptr $
438 print (struct Lisp_Overlay *) $ptr
439 end
440 document xoverlay
441 Print $ as a overlay pointer, assuming it is an Emacs Lisp overlay value.
442 end
443
444 define xmiscfree
445 xgetptr $
446 print (struct Lisp_Free *) $ptr
447 end
448 document xmiscfree
449 Print $ as a misc free-cell pointer, assuming it is an Emacs Lisp Misc value.
450 end
451
452 define xintfwd
453 xgetptr $
454 print (struct Lisp_Intfwd *) $ptr
455 end
456 document xintfwd
457 Print $ as an integer forwarding pointer, assuming it is an Emacs Lisp Misc value.
458 end
459
460 define xboolfwd
461 xgetptr $
462 print (struct Lisp_Boolfwd *) $ptr
463 end
464 document xboolfwd
465 Print $ as a boolean forwarding pointer, assuming it is an Emacs Lisp Misc value.
466 end
467
468 define xobjfwd
469 xgetptr $
470 print (struct Lisp_Objfwd *) $ptr
471 end
472 document xobjfwd
473 Print $ as an object forwarding pointer, assuming it is an Emacs Lisp Misc value.
474 end
475
476 define xbufobjfwd
477 xgetptr $
478 print (struct Lisp_Buffer_Objfwd *) $ptr
479 end
480 document xbufobjfwd
481 Print $ as a buffer-local object forwarding pointer, assuming it is an Emacs Lisp Misc value.
482 end
483
484 define xkbobjfwd
485 xgetptr $
486 print (struct Lisp_Kboard_Objfwd *) $ptr
487 end
488 document xkbobjfwd
489 Print $ as a kboard-local object forwarding pointer, assuming it is an Emacs Lisp Misc value.
490 end
491
492 define xbuflocal
493 xgetptr $
494 print (struct Lisp_Buffer_Local_Value *) $ptr
495 end
496 document xbuflocal
497 Print $ as a buffer-local-value pointer, assuming it is an Emacs Lisp Misc value.
498 end
499
500 define xsymbol
501 set $sym = $
502 xgetptr $sym
503 print (struct Lisp_Symbol *) $ptr
504 xprintsym $sym
505 echo \n
506 end
507 document xsymbol
508 Print the name and address of the symbol $.
509 This command assumes that $ is an Emacs Lisp symbol value.
510 end
511
512 define xstring
513 xgetptr $
514 print (struct Lisp_String *) $ptr
515 xprintstr $
516 echo \n
517 end
518 document xstring
519 Print the contents and address of the string $.
520 This command assumes that $ is an Emacs Lisp string value.
521 end
522
523 define xvector
524 xgetptr $
525 print (struct Lisp_Vector *) $ptr
526 output ($->size > 50) ? 0 : ($->contents[0])@($->size & ~gdb_array_mark_flag)
527 echo \n
528 end
529 document xvector
530 Print the contents and address of the vector $.
531 This command assumes that $ is an Emacs Lisp vector value.
532 end
533
534 define xprocess
535 xgetptr $
536 print (struct Lisp_Process *) $ptr
537 output *$
538 echo \n
539 end
540 document xprocess
541 Print the address of the struct Lisp_process which the Lisp_Object $ points to.
542 end
543
544 define xframe
545 xgetptr $
546 print (struct frame *) $ptr
547 end
548 document xframe
549 Print $ as a frame pointer, assuming it is an Emacs Lisp frame value.
550 end
551
552 define xcompiled
553 xgetptr $
554 print (struct Lisp_Vector *) $ptr
555 output ($->contents[0])@($->size & 0xff)
556 end
557 document xcompiled
558 Print $ as a compiled function pointer, assuming it is an Emacs Lisp compiled value.
559 end
560
561 define xwindow
562 xgetptr $
563 print (struct window *) $ptr
564 set $window = (struct window *) $ptr
565 xgetint $window->total_cols
566 set $width=$int
567 xgetint $window->total_lines
568 set $height=$int
569 xgetint $window->left_col
570 set $left=$int
571 xgetint $window->top_line
572 set $top=$int
573 printf "%dx%d+%d+%d\n", $width, $height, $left, $top
574 end
575 document xwindow
576 Print $ as a window pointer, assuming it is an Emacs Lisp window value.
577 Print the window's position as "WIDTHxHEIGHT+LEFT+TOP".
578 end
579
580 define xwinconfig
581 xgetptr $
582 print (struct save_window_data *) $ptr
583 end
584 document xwinconfig
585 Print $ as a window configuration pointer, assuming it is an Emacs Lisp window configuration value.
586 end
587
588 define xsubr
589 xgetptr $
590 print (struct Lisp_Subr *) $ptr
591 output *$
592 echo \n
593 end
594 document xsubr
595 Print the address of the subr which the Lisp_Object $ points to.
596 end
597
598 define xchartable
599 xgetptr $
600 print (struct Lisp_Char_Table *) $ptr
601 printf "Purpose: "
602 xprintsym $->purpose
603 printf " %d extra slots", ($->size & 0x1ff) - 388
604 echo \n
605 end
606 document xchartable
607 Print the address of the char-table $, and its purpose.
608 This command assumes that $ is an Emacs Lisp char-table value.
609 end
610
611 define xboolvector
612 xgetptr $
613 print (struct Lisp_Bool_Vector *) $ptr
614 output ($->size > 256) ? 0 : ($->data[0])@((($->size & ~gdb_array_mark_flag) + 7)/ 8)
615 echo \n
616 end
617 document xboolvector
618 Print the contents and address of the bool-vector $.
619 This command assumes that $ is an Emacs Lisp bool-vector value.
620 end
621
622 define xbuffer
623 xgetptr $
624 print (struct buffer *) $ptr
625 xgetptr $->name
626 output ((struct Lisp_String *) $ptr)->data
627 echo \n
628 end
629 document xbuffer
630 Set $ as a buffer pointer, assuming it is an Emacs Lisp buffer value.
631 Print the name of the buffer.
632 end
633
634 define xhashtable
635 xgetptr $
636 print (struct Lisp_Hash_Table *) $ptr
637 end
638 document xhashtable
639 Set $ as a hash table pointer, assuming it is an Emacs Lisp hash table value.
640 end
641
642 define xcons
643 xgetptr $
644 print (struct Lisp_Cons *) $ptr
645 output/x *$
646 echo \n
647 end
648 document xcons
649 Print the contents of $, assuming it is an Emacs Lisp cons.
650 end
651
652 define nextcons
653 p $.u.cdr
654 xcons
655 end
656 document nextcons
657 Print the contents of the next cell in a list.
658 This assumes that the last thing you printed was a cons cell contents
659 (type struct Lisp_Cons) or a pointer to one.
660 end
661 define xcar
662 xgetptr $
663 xgettype $
664 print/x ($type == Lisp_Cons ? ((struct Lisp_Cons *) $ptr)->car : 0)
665 end
666 document xcar
667 Print the car of $, assuming it is an Emacs Lisp pair.
668 end
669
670 define xcdr
671 xgetptr $
672 xgettype $
673 print/x ($type == Lisp_Cons ? ((struct Lisp_Cons *) $ptr)->u.cdr : 0)
674 end
675 document xcdr
676 Print the cdr of $, assuming it is an Emacs Lisp pair.
677 end
678
679 define xfloat
680 xgetptr $
681 print ((struct Lisp_Float *) $ptr)->u.data
682 end
683 document xfloat
684 Print $ assuming it is a lisp floating-point number.
685 end
686
687 define xscrollbar
688 xgetptr $
689 print (struct scrollbar *) $ptr
690 output *$
691 echo \n
692 end
693 document xscrollbar
694 Print $ as a scrollbar pointer.
695 end
696
697 define xprintstr
698 set $data = $arg0->data
699 output ($arg0->size > 1000) ? 0 : ($data[0])@($arg0->size_byte < 0 ? $arg0->size & ~gdb_array_mark_flag : $arg0->size_byte)
700 end
701
702 define xprintsym
703 xgetptr $arg0
704 set $sym = (struct Lisp_Symbol *) $ptr
705 xgetptr $sym->xname
706 set $sym_name = (struct Lisp_String *) $ptr
707 xprintstr $sym_name
708 end
709 document xprintsym
710 Print argument as a symbol.
711 end
712
713 define xbacktrace
714 set $bt = backtrace_list
715 while $bt
716 xgettype (*$bt->function)
717 if $type == Lisp_Symbol
718 xprintsym (*$bt->function)
719 echo \n
720 else
721 printf "0x%x ", *$bt->function
722 if $type == Lisp_Vectorlike
723 xgetptr (*$bt->function)
724 set $size = ((struct Lisp_Vector *) $ptr)->size
725 output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size & ~gdb_array_mark_flag
726 else
727 printf "Lisp type %d", $type
728 end
729 echo \n
730 end
731 set $bt = $bt->next
732 end
733 end
734 document xbacktrace
735 Print a backtrace of Lisp function calls from backtrace_list.
736 Set a breakpoint at Fsignal and call this to see from where
737 an error was signaled.
738 end
739
740 # Show Lisp backtrace after normal backtrace.
741 define hookpost-backtrace
742 set $bt = backtrace_list
743 if $bt
744 echo \n
745 echo Lisp Backtrace:\n
746 xbacktrace
747 end
748 end
749
750 define xreload
751 set $tagmask = (((long)1 << gdb_gctypebits) - 1)
752 set $valmask = gdb_use_lsb ? ~($tagmask) : ((long)1 << gdb_valbits) - 1
753 end
754 document xreload
755 When starting Emacs a second time in the same gdb session under
756 FreeBSD 2.2.5, gdb 4.13, $valmask have lost
757 their values. (The same happens on current (2000) versions of GNU/Linux
758 with gdb 5.0.)
759 This function reloads them.
760 end
761 xreload
762
763 # Flush display (X only)
764 define ff
765 set x_flush (0)
766 end
767 document ff
768 Flush pending X window display updates to screen.
769 Works only when an inferior emacs is executing.
770 end
771
772
773 define hook-run
774 xreload
775 end
776
777 # Call xreload if a new Emacs executable is loaded.
778 define hookpost-run
779 xreload
780 end
781
782 set print pretty on
783 set print sevenbit-strings
784
785 show environment DISPLAY
786 show environment TERM
787 set args -geometry 80x40+0+0
788
789 # People get bothered when they see messages about non-existent functions...
790 xgetptr Vsystem_type
791 # $ptr is NULL in temacs
792 if ($ptr != 0)
793 set $tem = (struct Lisp_Symbol *) $ptr
794 xgetptr $tem->xname
795 set $tem = (struct Lisp_String *) $ptr
796 set $tem = (char *) $tem->data
797
798 # Don't let abort actually run, as it will make stdio stop working and
799 # therefore the `pr' command above as well.
800 if $tem[0] == 'w' && $tem[1] == 'i' && $tem[2] == 'n' && $tem[3] == 'd'
801 # The windows-nt build replaces abort with its own function.
802 break w32_abort
803 else
804 break abort
805 end
806 end
807
808 # x_error_quitter is defined only on X. But window-system is set up
809 # only at run time, during Emacs startup, so we need to defer setting
810 # the breakpoint. init_sys_modes is the first function called on
811 # every platform after init_display, where window-system is set.
812 tbreak init_sys_modes
813 commands
814 silent
815 xgetptr Vwindow_system
816 set $tem = (struct Lisp_Symbol *) $ptr
817 xgetptr $tem->xname
818 set $tem = (struct Lisp_String *) $ptr
819 set $tem = (char *) $tem->data
820 # If we are running in synchronous mode, we want a chance to look
821 # around before Emacs exits. Perhaps we should put the break
822 # somewhere else instead...
823 if $tem[0] == 'x' && $tem[1] == '\0'
824 break x_error_quitter
825 end
826 continue
827 end
828 # arch-tag: 12f34321-7bfa-4240-b77a-3cd3a1696dfe