1 /* Everything about breakpoints, for GDB.
2 Copyright (C) 1986, 1987, 1989, 1990 Free Software Foundation, Inc.
4 This file is part of GDB.
6 This program 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 of the License, or
9 (at your option) any later version.
11 This program 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.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
26 #include "breakpoint.h"
27 #include "expression.h"
37 extern int addressprint; /* Print machine addresses? */
38 extern int demangle; /* Print de-mangled symbol names? */
40 extern int catch_errors ();
41 extern void set_next_address (); /* ...for x/ command */
43 /* Are we executing breakpoint commands? */
44 static int executing_breakpoint_commands;
46 /* States of enablement of breakpoint.
47 `temporary' means disable when hit.
48 `delete' means delete when hit. */
50 enum enable { disabled, enabled, temporary, delete};
52 /* Not that the ->silent field is not currently used by any commands
53 (though the code is in there if it was to be, and set_raw_breakpoint
54 does set it to 0). I implemented it because I thought it would be
55 useful for a hack I had to put in; I'm going to leave it in because
56 I can see how there might be times when it would indeed be useful */
58 /* This is for a breakpoint or a watchpoint. */
62 struct breakpoint *next;
63 /* Number assigned to distinguish breakpoints. */
65 /* Address to break at, or NULL if not a breakpoint. */
67 /* Line number of this address. Redundant. Only matters if address
70 /* Symtab of file of this address. Redundant. Only matters if address
72 struct symtab *symtab;
73 /* Zero means disabled; remember the info but don't break here. */
75 /* Non-zero means a silent breakpoint (don't print frame info
78 /* Number of stops at this breakpoint that should
79 be continued automatically before really stopping. */
81 /* "Real" contents of byte where breakpoint has been inserted.
82 Valid only when breakpoints are in the program. Under the complete
83 control of the target insert_breakpoint and remove_breakpoint routines.
84 No other code should assume anything about the value(s) here. */
85 char shadow_contents[BREAKPOINT_MAX];
86 /* Nonzero if this breakpoint is now inserted. Only matters if address
89 /* Nonzero if this is not the first breakpoint in the list
90 for the given address. Only matters if address is non-NULL. */
92 /* Chain of command lines to execute when this breakpoint is hit. */
93 struct command_line *commands;
94 /* Stack depth (address of frame). If nonzero, break only if fp
97 /* Conditional. Break only if this expression's value is nonzero. */
98 struct expression *cond;
100 /* String we used to set the breakpoint (malloc'd). Only matters if
101 address is non-NULL. */
103 /* String form of the breakpoint condition (malloc'd), or NULL if there
107 /* The expression we are watching, or NULL if not a watchpoint. */
108 struct expression *exp;
109 /* The largest block within which it is valid, or NULL if it is
110 valid anywhere (e.g. consists just of global symbols). */
111 struct block *exp_valid_block;
112 /* Value of the watchpoint the last time we checked it. */
116 #define ALL_BREAKPOINTS(b) for (b = breakpoint_chain; b; b = b->next)
118 /* Chain of all breakpoints defined. */
120 struct breakpoint *breakpoint_chain;
122 /* Number of last breakpoint made. */
124 static int breakpoint_count;
126 /* Set breakpoint count to NUM. */
128 set_breakpoint_count (num)
131 breakpoint_count = num;
132 set_internalvar (lookup_internalvar ("bpnum"),
133 value_from_longest (builtin_type_int, (LONGEST) num));
136 /* Default address, symtab and line to put a breakpoint at
137 for "break" command with no arg.
138 if default_breakpoint_valid is zero, the other three are
139 not valid, and "break" with no arg is an error.
141 This set by print_stack_frame, which calls set_default_breakpoint. */
143 int default_breakpoint_valid;
144 CORE_ADDR default_breakpoint_address;
145 struct symtab *default_breakpoint_symtab;
146 int default_breakpoint_line;
148 static void delete_breakpoint ();
149 void breakpoint_auto_delete ();
151 /* Flag indicating extra verbosity for xgdb. */
152 extern int xgdb_verbose;
154 /* *PP is a string denoting a breakpoint. Get the number of the breakpoint.
155 Advance *PP after the string and any trailing whitespace.
157 Currently the string can either be a number or "$" followed by the name
158 of a convenience variable. Making it an expression wouldn't work well
159 for map_breakpoint_numbers (e.g. "4 + 5 + 6"). */
168 /* Empty line means refer to the last breakpoint. */
169 return breakpoint_count;
172 /* Make a copy of the name, so we can null-terminate it
173 to pass to lookup_internalvar(). */
178 while (isalnum (*p) || *p == '_')
180 varname = (char *) alloca (p - start + 1);
181 strncpy (varname, start, p - start);
182 varname[p - start] = '\0';
183 val = value_of_internalvar (lookup_internalvar (varname));
184 if (TYPE_CODE (VALUE_TYPE (val)) != TYPE_CODE_INT)
186 "Convenience variables used to specify breakpoints must have integer values."
188 retval = (int) value_as_long (val);
192 while (*p >= '0' && *p <= '9')
195 /* There is no number here. (e.g. "cond a == b"). */
196 error_no_arg ("breakpoint number");
199 if (!(isspace (*p) || *p == '\0'))
200 error ("breakpoint number expected");
207 /* condition N EXP -- set break condition of breakpoint N to EXP. */
210 condition_command (arg, from_tty)
214 register struct breakpoint *b;
219 error_no_arg ("breakpoint number");
222 bnum = get_number (&p);
225 if (b->number == bnum)
232 if (b->cond_string != NULL)
233 free (b->cond_string);
238 b->cond_string = NULL;
240 printf ("Breakpoint %d now unconditional.\n", bnum);
245 /* I don't know if it matters whether this is the string the user
246 typed in or the decompiled expression. */
247 b->cond_string = savestring (arg, strlen (arg));
248 b->cond = parse_c_1 (&arg, block_for_pc (b->address), 0);
250 error ("Junk at end of expression");
255 error ("No breakpoint number %d.", bnum);
260 commands_command (arg, from_tty)
264 register struct breakpoint *b;
267 struct command_line *l;
269 /* If we allowed this, we would have problems with when to
270 free the storage, if we change the commands currently
273 if (executing_breakpoint_commands)
274 error ("Can't use the \"commands\" command among a breakpoint's commands.");
277 bnum = get_number (&p);
279 error ("Unexpected extra arguments following breakpoint number.");
282 if (b->number == bnum)
284 if (from_tty && input_from_terminal_p ())
286 printf ("Type commands for when breakpoint %d is hit, one per line.\n\
287 End with a line saying just \"end\".\n", bnum);
290 l = read_command_lines ();
291 free_command_lines (&b->commands);
295 error ("No breakpoint number %d.", bnum);
298 extern int memory_breakpoint_size; /* from mem-break.c */
300 /* Like target_read_memory() but if breakpoints are inserted, return
301 the shadow contents instead of the breakpoints themselves. */
303 read_memory_nobpt (memaddr, myaddr, len)
309 struct breakpoint *b;
311 if (memory_breakpoint_size < 0)
312 /* No breakpoints on this machine. */
313 return target_read_memory (memaddr, myaddr, len);
317 if (b->address == NULL || !b->inserted)
319 else if (b->address + memory_breakpoint_size <= memaddr)
320 /* The breakpoint is entirely before the chunk of memory
323 else if (b->address >= memaddr + len)
324 /* The breakpoint is entirely after the chunk of memory we
329 /* Copy the breakpoint from the shadow contents, and recurse
330 for the things before and after. */
332 /* Addresses and length of the part of the breakpoint that
334 CORE_ADDR membpt = b->address;
335 unsigned int bptlen = memory_breakpoint_size;
336 /* Offset within shadow_contents. */
339 if (membpt < memaddr)
341 /* Only copy the second part of the breakpoint. */
342 bptlen -= memaddr - membpt;
343 bptoffset = memaddr - membpt;
347 if (membpt + bptlen > memaddr + len)
349 /* Only copy the first part of the breakpoint. */
350 bptlen -= (membpt + bptlen) - (memaddr + len);
353 bcopy (b->shadow_contents + bptoffset,
354 myaddr + membpt - memaddr, bptlen);
356 if (membpt > memaddr)
358 /* Copy the section of memory before the breakpoint. */
359 status = read_memory_nobpt (memaddr, myaddr, membpt - memaddr);
364 if (membpt + bptlen < memaddr + len)
366 /* Copy the section of memory after the breakpoint. */
367 status = read_memory_nobpt
369 myaddr + membpt + bptlen - memaddr,
370 memaddr + len - (membpt + bptlen));
377 /* Nothing overlaps. Just call read_memory_noerr. */
378 return target_read_memory (memaddr, myaddr, len);
381 /* insert_breakpoints is used when starting or continuing the program.
382 remove_breakpoints is used when the program stops.
383 Both return zero if successful,
384 or an `errno' value if could not write the inferior. */
387 insert_breakpoints ()
389 register struct breakpoint *b;
391 int disabled_breaks = 0;
394 if (b->address != NULL
395 && b->enable != disabled
399 val = target_insert_breakpoint(b->address, b->shadow_contents);
402 /* Can't set the breakpoint. */
403 #if defined (DISABLE_UNSETTABLE_BREAK)
404 if (DISABLE_UNSETTABLE_BREAK (b->address))
407 b->enable = disabled;
408 if (!disabled_breaks)
411 "Cannot insert breakpoint %d:\n", b->number);
412 printf_filtered ("Disabling shared library breakpoints:\n");
415 printf_filtered ("%d ", b->number);
420 fprintf (stderr, "Cannot insert breakpoint %d:\n", b->number);
421 memory_error (val, b->address); /* which bombs us out */
428 printf_filtered ("\n");
433 remove_breakpoints ()
435 register struct breakpoint *b;
438 #ifdef BREAKPOINT_DEBUG
439 printf ("Removing breakpoints.\n");
440 #endif /* BREAKPOINT_DEBUG */
443 if (b->address != NULL && b->inserted)
445 val = target_remove_breakpoint(b->address, b->shadow_contents);
449 #ifdef BREAKPOINT_DEBUG
450 printf ("Removed breakpoint at 0x%x, shadow 0x%x, 0x%x.\n",
451 b->address, b->shadow_contents[0], b->shadow_contents[1]);
452 #endif /* BREAKPOINT_DEBUG */
458 /* Clear the "inserted" flag in all breakpoints.
459 This is done when the inferior is loaded. */
462 mark_breakpoints_out ()
464 register struct breakpoint *b;
470 /* breakpoint_here_p (PC) returns 1 if an enabled breakpoint exists at PC.
471 When continuing from a location with a breakpoint,
472 we actually single step once before calling insert_breakpoints. */
475 breakpoint_here_p (pc)
478 register struct breakpoint *b;
481 if (b->enable != disabled && b->address == pc)
487 /* bpstat stuff. External routines' interfaces are documented
502 if (p->old_val != NULL)
503 value_free (p->old_val);
521 for (; bs != NULL; bs = bs->next)
523 tmp = (bpstat) xmalloc (sizeof (*tmp));
524 bcopy (bs, tmp, sizeof (*tmp));
526 /* This is the first thing in the chain. */
540 struct breakpoint *b;
543 return 0; /* No more breakpoint values */
546 b = (*bsp)->breakpoint_at;
549 return -1; /* breakpoint that's been deleted since */
551 return b->number; /* We have its number */
556 bpstat_clear_actions (bs)
559 for (; bs != NULL; bs = bs->next)
562 if (bs->old_val != NULL)
564 value_free (bs->old_val);
570 /* Stub for cleaning up our state if we error-out of a breakpoint command */
573 cleanup_executing_breakpoints (ignore)
576 executing_breakpoint_commands = 0;
579 /* Execute all the commands associated with all the breakpoints at this
580 location. Any of these commands could cause the process to proceed
581 beyond this point, etc. We look out for such changes by checking
582 the global "breakpoint_proceeded" after each command. */
584 bpstat_do_actions (bsp)
588 struct cleanup *old_chain;
590 executing_breakpoint_commands = 1;
591 old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
596 breakpoint_proceeded = 0;
597 for (; bs != NULL; bs = bs->next)
601 char *line = bs->commands->line;
602 bs->commands = bs->commands->next;
603 execute_command (line, 0);
604 /* If the inferior is proceeded by the command, bomb out now.
605 The bpstat chain has been blown away by wait_for_inferior.
606 But since execution has stopped again, there is a new bpstat
607 to look at, so start over. */
608 if (breakpoint_proceeded)
612 clear_momentary_breakpoints ();
614 executing_breakpoint_commands = 0;
615 discard_cleanups (old_chain);
622 /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
623 which has since been deleted. */
624 if (bs == NULL || bs->breakpoint_at == NULL)
627 /* If bpstat_stop_status says don't print, OK, we won't. An example
628 circumstance is when we single-stepped for both a watchpoint and
629 for a "stepi" instruction. The bpstat says that the watchpoint
630 explains the stop, but we shouldn't print because the watchpoint's
631 value didn't change -- and the real reason we are stopping here
632 rather than continuing to step (as the watchpoint would've had us do)
633 is because of the "stepi". */
637 if (bs->breakpoint_at->address != NULL)
639 /* I think the user probably only wants to see one breakpoint
640 number, not all of them. */
641 printf_filtered ("\nBreakpoint %d, ", bs->breakpoint_at->number);
645 if (bs->old_val != NULL)
647 printf_filtered ("\nWatchpoint %d, ", bs->breakpoint_at->number);
648 print_expression (bs->breakpoint_at->exp, stdout);
649 printf_filtered ("\nOld value = ");
650 value_print (bs->old_val, stdout, 0, Val_pretty_default);
651 printf_filtered ("\nNew value = ");
652 value_print (bs->breakpoint_at->val, stdout, 0,
654 printf_filtered ("\n");
655 value_free (bs->old_val);
660 /* Maybe another breakpoint in the chain caused us to stop.
661 (Currently all watchpoints go on the bpstat whether hit or
662 not. That probably could (should) be changed, provided care is taken
663 with respect to bpstat_explains_signal). */
665 return bpstat_print (bs->next);
667 fprintf_filtered (stderr, "gdb internal error: in bpstat_print\n");
671 /* Evaluate the expression EXP and return 1 if value is zero.
672 This is used inside a catch_errors to evaluate the breakpoint condition.
673 The argument is a "struct expression *" that has been cast to char * to
674 make it pass through catch_errors. */
677 breakpoint_cond_eval (exp)
680 return value_zerop (evaluate_expression ((struct expression *)exp));
683 /* Allocate a new bpstat and chain it to the current one. */
686 bpstat_alloc (b, cbs)
687 register struct breakpoint *b;
688 bpstat cbs; /* Current "bs" value */
692 bs = (bpstat) xmalloc (sizeof (*bs));
694 bs->breakpoint_at = b;
695 /* If the condition is false, etc., don't do the commands. */
697 bs->momentary = b->number == -3;
702 /* Determine whether we stopped at a breakpoint, etc, or whether we
703 don't understand this stop. Result is a chain of bpstat's such that:
705 if we don't understand the stop, the result is a null pointer.
707 if we understand why we stopped, the result is not null, and
708 the first element of the chain contains summary "stop" and
709 "print" flags for the whole chain.
711 Each element of the chain refers to a particular breakpoint or
712 watchpoint at which we have stopped. (We may have stopped for
715 Each element of the chain has valid next, breakpoint_at,
716 commands, FIXME??? fields.
722 bpstat_stop_status (pc, frame_address)
724 FRAME_ADDR frame_address;
726 register struct breakpoint *b;
730 #if DECR_PC_AFTER_BREAK != 0 || defined (SHIFT_INST_REGS)
731 /* True if we've hit a breakpoint (as opposed to a watchpoint). */
732 int real_breakpoint = 0;
734 /* Root of the chain of bpstat's */
735 struct bpstat__struct root_bs[1];
736 /* Pointer to the last thing in the chain currently. */
739 /* Get the address where the breakpoint would have been. */
740 bp_addr = *pc - DECR_PC_AFTER_BREAK;
747 if (b->enable == disabled)
749 if (b->address != NULL && b->address != bp_addr)
752 bs = bpstat_alloc (b, bs); /* Alloc a bpstat to explain stop */
757 if (b->exp != NULL) /* Watchpoint */
759 int within_current_scope;
760 if (b->exp_valid_block != NULL)
761 within_current_scope =
762 contained_in (get_selected_block (), b->exp_valid_block);
764 within_current_scope = 1;
766 if (within_current_scope)
768 /* We use value_{,free_to_}mark because it could be a
769 *long* time before we return to the command level and
770 call free_all_values. */
772 value mark = value_mark ();
773 value new_val = evaluate_expression (b->exp);
774 if (!value_equal (b->val, new_val))
776 release_value (new_val);
777 value_free_to_mark (mark);
778 bs->old_val = b->val;
780 /* We will stop here */
784 /* Nothing changed, don't do anything. */
785 value_free_to_mark (mark);
787 /* We won't stop here */
792 /* This seems like the only logical thing to do because
793 if we temporarily ignored the watchpoint, then when
794 we reenter the block in which it is valid it contains
795 garbage (in the case of a function, it may have two
796 garbage values, one before and one after the prologue).
797 So we can't even detect the first assignment to it and
798 watch after that (since the garbage may or may not equal
799 the first value assigned). */
800 b->enable = disabled;
802 Watchpoint %d disabled because the program has left the block in\n\
803 which its expression is valid.\n", b->number);
804 /* We won't stop here */
805 /* FIXME, maybe we should stop here!!! */
809 #if DECR_PC_AFTER_BREAK != 0 || defined (SHIFT_INST_REGS)
814 if (b->frame && b->frame != frame_address)
822 /* Need to select the frame, with all that implies
823 so that the conditions will have the right context. */
824 select_frame (get_current_frame (), 0);
826 = catch_errors (breakpoint_cond_eval, (char *)(b->cond),
827 "Error in testing breakpoint condition:\n");
828 /* FIXME-someday, should give breakpoint # */
831 if (b->cond && value_is_zero)
835 else if (b->ignore_count > 0)
842 /* We will stop here */
843 if (b->enable == temporary)
844 b->enable = disabled;
845 bs->commands = b->commands;
848 if (bs->commands && !strcmp ("silent", bs->commands->line))
850 bs->commands = bs->commands->next;
861 bs->next = NULL; /* Terminate the chain */
862 bs = root_bs->next; /* Re-grab the head of the chain */
867 #if DECR_PC_AFTER_BREAK != 0 || defined (SHIFT_INST_REGS)
871 #if defined (SHIFT_INST_REGS)
873 CORE_ADDR pc = read_register (PC_REGNUM);
874 CORE_ADDR npc = read_register (NPC_REGNUM);
877 write_register (NNPC_REGNUM, npc);
878 write_register (NPC_REGNUM, pc);
881 #else /* No SHIFT_INST_REGS. */
883 #endif /* No SHIFT_INST_REGS. */
885 #endif /* DECR_PC_AFTER_BREAK != 0. */
891 bpstat_should_step ()
893 struct breakpoint *b;
895 if (b->enable != disabled && b->exp != NULL)
900 /* Print information on breakpoint number BNUM, or -1 if all.
901 If WATCHPOINTS is zero, process only breakpoints; if WATCHPOINTS
902 is nonzero, process only watchpoints. */
905 breakpoint_1 (bnum, watchpoints)
909 register struct breakpoint *b;
910 register struct command_line *l;
911 register struct symbol *sym;
912 CORE_ADDR last_addr = (CORE_ADDR)-1;
913 int header_printed = 0;
916 if (bnum == -1 || bnum == b->number)
918 if (b->address == NULL && !watchpoints)
922 error ("That is a watchpoint, not a breakpoint.");
924 if (b->address != NULL && watchpoints)
928 error ("That is a breakpoint, not a watchpoint.");
934 printf_filtered (" Enb Expression\n");
935 else if (addressprint)
936 printf_filtered (" Enb Address Where\n");
938 printf_filtered (" Enb Where\n");
942 printf_filtered ("#%-3d %c ", b->number, "nyod"[(int) b->enable]);
943 if (b->address == NULL) {
944 printf_filtered (" ");
945 print_expression (b->exp, stdout);
948 printf_filtered (" 0x%08x ", b->address);
950 last_addr = b->address;
953 sym = find_pc_function (b->address);
956 fputs_filtered (" in ", stdout);
957 fputs_demangled (SYMBOL_NAME (sym), stdout, 1);
958 fputs_filtered (" at ", stdout);
960 fputs_filtered (b->symtab->filename, stdout);
961 printf_filtered (":%d", b->line_number);
964 print_address_symbolic (b->address, stdout, demangle, " ");
967 printf_filtered ("\n");
970 printf_filtered ("\tstop only in stack frame at 0x%x\n", b->frame);
973 printf_filtered ("\tstop only if ");
974 print_expression (b->cond, stdout);
975 printf_filtered ("\n");
978 printf_filtered ("\tignore next %d hits\n", b->ignore_count);
979 if ((l = b->commands))
982 fputs_filtered ("\t", stdout);
983 fputs_filtered (l->line, stdout);
984 fputs_filtered ("\n", stdout);
991 char *which = watchpoints ? "watch" : "break";
993 printf_filtered ("No %spoints.\n", which);
995 printf_filtered ("No %spoint numbered %d.\n", which, bnum);
998 /* Compare against (CORE_ADDR)-1 in case some compiler decides
999 that a comparison of an unsigned with -1 is always false. */
1000 if (last_addr != (CORE_ADDR)-1)
1001 set_next_address (last_addr);
1006 breakpoints_info (bnum_exp, from_tty)
1013 bnum = parse_and_eval_address (bnum_exp);
1015 breakpoint_1 (bnum, 0);
1020 watchpoints_info (bnum_exp, from_tty)
1027 bnum = parse_and_eval_address (bnum_exp);
1029 breakpoint_1 (bnum, 1);
1032 /* Print a message describing any breakpoints set at PC. */
1035 describe_other_breakpoints (pc)
1036 register CORE_ADDR pc;
1038 register int others = 0;
1039 register struct breakpoint *b;
1042 if (b->address == pc)
1046 printf ("Note: breakpoint%s ", (others > 1) ? "s" : "");
1048 if (b->address == pc)
1053 (b->enable == disabled) ? " (disabled)" : "",
1054 (others > 1) ? "," : ((others == 1) ? " and" : ""));
1056 printf ("also set at pc 0x%x.\n", pc);
1060 /* Set the default place to put a breakpoint
1061 for the `break' command with no arguments. */
1064 set_default_breakpoint (valid, addr, symtab, line)
1067 struct symtab *symtab;
1070 default_breakpoint_valid = valid;
1071 default_breakpoint_address = addr;
1072 default_breakpoint_symtab = symtab;
1073 default_breakpoint_line = line;
1076 /* Rescan breakpoints at address ADDRESS,
1077 marking the first one as "first" and any others as "duplicates".
1078 This is so that the bpt instruction is only inserted once. */
1081 check_duplicates (address)
1084 register struct breakpoint *b;
1085 register int count = 0;
1087 if (address == NULL) /* Watchpoints are uninteresting */
1091 if (b->enable != disabled && b->address == address)
1094 b->duplicate = count > 1;
1098 /* Low level routine to set a breakpoint.
1099 Takes as args the three things that every breakpoint must have.
1100 Returns the breakpoint object so caller can set other things.
1101 Does not set the breakpoint number!
1102 Does not print anything.
1104 ==> This routine should not be called if there is a chance of later
1105 error(); otherwise it leaves a bogus breakpoint on the chain. Validate
1106 your arguments BEFORE calling this routine! */
1108 static struct breakpoint *
1109 set_raw_breakpoint (sal)
1110 struct symtab_and_line sal;
1112 register struct breakpoint *b, *b1;
1114 b = (struct breakpoint *) xmalloc (sizeof (struct breakpoint));
1115 bzero (b, sizeof *b);
1116 b->address = sal.pc;
1117 b->symtab = sal.symtab;
1118 b->line_number = sal.line;
1119 b->enable = enabled;
1122 b->ignore_count = 0;
1126 /* Add this breakpoint to the end of the chain
1127 so that a list of breakpoints will come out in order
1128 of increasing numbers. */
1130 b1 = breakpoint_chain;
1132 breakpoint_chain = b;
1140 check_duplicates (sal.pc);
1145 /* Set a breakpoint that will evaporate an end of command
1146 at address specified by SAL.
1147 Restrict it to frame FRAME if FRAME is nonzero. */
1150 set_momentary_breakpoint (sal, frame)
1151 struct symtab_and_line sal;
1154 register struct breakpoint *b;
1155 b = set_raw_breakpoint (sal);
1158 b->frame = (frame ? FRAME_FP (frame) : 0);
1162 clear_momentary_breakpoints ()
1164 register struct breakpoint *b;
1166 if (b->number == -3)
1168 delete_breakpoint (b);
1173 /* Tell the user we have just set a breakpoint B. */
1176 struct breakpoint *b;
1180 printf_filtered ("Watchpoint %d: ", b->number);
1181 print_expression (b->exp, stdout);
1185 printf_filtered ("Breakpoint %d at 0x%x", b->number, b->address);
1187 printf_filtered (": file %s, line %d.",
1188 b->symtab->filename, b->line_number);
1190 printf_filtered ("\n");
1194 /* Nobody calls this currently. */
1195 /* Set a breakpoint from a symtab and line.
1196 If TEMPFLAG is nonzero, it is a temporary breakpoint.
1197 ADDR_STRING is a malloc'd string holding the name of where we are
1198 setting the breakpoint. This is used later to re-set it after the
1199 program is relinked and symbols are reloaded.
1200 Print the same confirmation messages that the breakpoint command prints. */
1203 set_breakpoint (s, line, tempflag, addr_string)
1209 register struct breakpoint *b;
1210 struct symtab_and_line sal;
1214 sal.pc = find_line_pc (sal.symtab, sal.line);
1216 error ("No line %d in file \"%s\".\n", sal.line, sal.symtab->filename);
1219 describe_other_breakpoints (sal.pc);
1221 b = set_raw_breakpoint (sal);
1222 set_breakpoint_count (breakpoint_count + 1);
1223 b->number = breakpoint_count;
1225 b->addr_string = addr_string;
1227 b->enable = temporary;
1234 /* Set a breakpoint according to ARG (function, linenum or *address)
1235 and make it temporary if TEMPFLAG is nonzero. */
1238 break_command_1 (arg, tempflag, from_tty)
1240 int tempflag, from_tty;
1242 struct symtabs_and_lines sals;
1243 struct symtab_and_line sal;
1244 register struct expression *cond = 0;
1245 register struct breakpoint *b;
1247 /* Pointers in arg to the start, and one past the end, of the condition. */
1248 char *cond_start = NULL;
1250 /* Pointers in arg to the start, and one past the end,
1251 of the address part. */
1252 char *addr_start = NULL;
1261 sal.line = sal.pc = sal.end = 0;
1264 /* If no arg given, or if first arg is 'if ', use the default breakpoint. */
1266 if (!arg || (arg[0] == 'i' && arg[1] == 'f'
1267 && (arg[2] == ' ' || arg[2] == '\t')))
1269 if (default_breakpoint_valid)
1271 sals.sals = (struct symtab_and_line *)
1272 xmalloc (sizeof (struct symtab_and_line));
1273 sal.pc = default_breakpoint_address;
1274 sal.line = default_breakpoint_line;
1275 sal.symtab = default_breakpoint_symtab;
1280 error ("No default breakpoint address now.");
1286 /* Force almost all breakpoints to be in terms of the
1287 current_source_symtab (which is decode_line_1's default). This
1288 should produce the results we want almost all of the time while
1289 leaving default_breakpoint_* alone. */
1290 if (default_breakpoint_valid
1291 && (!current_source_symtab
1292 || (arg && (*arg == '+' || *arg == '-'))))
1293 sals = decode_line_1 (&arg, 1, default_breakpoint_symtab,
1294 default_breakpoint_line);
1296 sals = decode_line_1 (&arg, 1, (struct symtab *)NULL, 0);
1304 for (i = 0; i < sals.nelts; i++)
1307 if (sal.pc == 0 && sal.symtab != 0)
1309 pc = find_line_pc (sal.symtab, sal.line);
1311 error ("No line %d in file \"%s\".",
1312 sal.line, sal.symtab->filename);
1319 if (arg[0] == 'i' && arg[1] == 'f'
1320 && (arg[2] == ' ' || arg[2] == '\t'))
1324 cond = parse_c_1 (&arg, block_for_pc (pc), 0);
1328 error ("Junk at end of arguments.");
1330 sals.sals[i].pc = pc;
1333 for (i = 0; i < sals.nelts; i++)
1338 describe_other_breakpoints (sal.pc);
1340 b = set_raw_breakpoint (sal);
1341 set_breakpoint_count (breakpoint_count + 1);
1342 b->number = breakpoint_count;
1346 b->addr_string = savestring (addr_start, addr_end - addr_start);
1348 b->cond_string = savestring (cond_start, cond_end - cond_start);
1351 b->enable = temporary;
1358 printf ("Multiple breakpoints were set.\n");
1359 printf ("Use the \"delete\" command to delete unwanted breakpoints.\n");
1365 break_command (arg, from_tty)
1369 break_command_1 (arg, 0, from_tty);
1373 tbreak_command (arg, from_tty)
1377 break_command_1 (arg, 1, from_tty);
1382 watch_command (arg, from_tty)
1386 struct breakpoint *b;
1387 struct symtab_and_line sal;
1388 struct expression *exp;
1389 struct block *exp_valid_block;
1396 /* Parse arguments. */
1397 innermost_block = NULL;
1398 exp = parse_c_expression (arg);
1399 exp_valid_block = innermost_block;
1400 val = evaluate_expression (exp);
1401 release_value (val);
1403 /* Now set up the breakpoint. */
1404 b = set_raw_breakpoint (sal);
1405 set_breakpoint_count (breakpoint_count + 1);
1406 b->number = breakpoint_count;
1408 b->exp_valid_block = exp_valid_block;
1411 b->cond_string = NULL;
1416 * Helper routine for the until_command routine in infcmd.c. Here
1417 * because it uses the mechanisms of breakpoints.
1421 until_break_command (arg, from_tty)
1425 struct symtabs_and_lines sals;
1426 struct symtab_and_line sal;
1427 FRAME prev_frame = get_prev_frame (selected_frame);
1429 clear_proceed_status ();
1431 /* Set a breakpoint where the user wants it and at return from
1434 if (default_breakpoint_valid)
1435 sals = decode_line_1 (&arg, 1, default_breakpoint_symtab,
1436 default_breakpoint_line);
1438 sals = decode_line_1 (&arg, 1, (struct symtab *)NULL, 0);
1440 if (sals.nelts != 1)
1441 error ("Couldn't get information on specified line.");
1444 free (sals.sals); /* malloc'd, so freed */
1447 error ("Junk at end of arguments.");
1449 if (sal.pc == 0 && sal.symtab != 0)
1450 sal.pc = find_line_pc (sal.symtab, sal.line);
1453 error ("No line %d in file \"%s\".", sal.line, sal.symtab->filename);
1455 set_momentary_breakpoint (sal, selected_frame);
1457 /* Keep within the current frame */
1461 struct frame_info *fi;
1463 fi = get_frame_info (prev_frame);
1464 sal = find_pc_line (fi->pc, 0);
1466 set_momentary_breakpoint (sal, prev_frame);
1469 proceed (-1, -1, 0);
1473 /* These aren't used; I don't konw what they were for. */
1474 /* Set a breakpoint at the catch clause for NAME. */
1476 catch_breakpoint (name)
1482 disable_catch_breakpoint ()
1487 delete_catch_breakpoint ()
1492 enable_catch_breakpoint ()
1499 struct sal_chain *next;
1500 struct symtab_and_line sal;
1504 /* This isn't used; I don't know what it was for. */
1505 /* For each catch clause identified in ARGS, run FUNCTION
1506 with that clause as an argument. */
1507 static struct symtabs_and_lines
1508 map_catch_names (args, function)
1512 register char *p = args;
1514 struct symtabs_and_lines sals;
1516 struct sal_chain *sal_chain = 0;
1520 error_no_arg ("one or more catch names");
1528 /* Don't swallow conditional part. */
1529 if (p1[0] == 'i' && p1[1] == 'f'
1530 && (p1[2] == ' ' || p1[2] == '\t'))
1536 while (isalnum (*p1) || *p1 == '_' || *p1 == '$')
1540 if (*p1 && *p1 != ' ' && *p1 != '\t')
1541 error ("Arguments must be catch names.");
1547 struct sal_chain *next
1548 = (struct sal_chain *)alloca (sizeof (struct sal_chain));
1549 next->next = sal_chain;
1550 next->sal = get_catch_sal (p);
1555 printf ("No catch clause for exception %s.\n", p);
1560 while (*p == ' ' || *p == '\t') p++;
1565 /* This shares a lot of code with `print_frame_label_vars' from stack.c. */
1567 static struct symtabs_and_lines
1568 get_catch_sals (this_level_only)
1569 int this_level_only;
1571 extern struct blockvector *blockvector_for_pc ();
1572 register struct blockvector *bl;
1573 register struct block *block;
1574 int index, have_default = 0;
1575 struct frame_info *fi;
1577 struct symtabs_and_lines sals;
1578 struct sal_chain *sal_chain = 0;
1579 char *blocks_searched;
1581 /* Not sure whether an error message is always the correct response,
1582 but it's better than a core dump. */
1583 if (selected_frame == NULL)
1584 error ("No selected frame.");
1585 block = get_frame_block (selected_frame);
1586 fi = get_frame_info (selected_frame);
1593 error ("No symbol table info available.\n");
1595 bl = blockvector_for_pc (BLOCK_END (block) - 4, &index);
1596 blocks_searched = (char *) alloca (BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
1597 bzero (blocks_searched, BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
1601 CORE_ADDR end = BLOCK_END (block) - 4;
1604 if (bl != blockvector_for_pc (end, &index))
1605 error ("blockvector blotch");
1606 if (BLOCKVECTOR_BLOCK (bl, index) != block)
1607 error ("blockvector botch");
1608 last_index = BLOCKVECTOR_NBLOCKS (bl);
1611 /* Don't print out blocks that have gone by. */
1612 while (index < last_index
1613 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < pc)
1616 while (index < last_index
1617 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < end)
1619 if (blocks_searched[index] == 0)
1621 struct block *b = BLOCKVECTOR_BLOCK (bl, index);
1624 register struct symbol *sym;
1626 nsyms = BLOCK_NSYMS (b);
1628 for (i = 0; i < nsyms; i++)
1630 sym = BLOCK_SYM (b, i);
1631 if (! strcmp (SYMBOL_NAME (sym), "default"))
1637 if (SYMBOL_CLASS (sym) == LOC_LABEL)
1639 struct sal_chain *next = (struct sal_chain *)
1640 alloca (sizeof (struct sal_chain));
1641 next->next = sal_chain;
1642 next->sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
1646 blocks_searched[index] = 1;
1652 if (sal_chain && this_level_only)
1655 /* After handling the function's top-level block, stop.
1656 Don't continue to its superblock, the block of
1657 per-file symbols. */
1658 if (BLOCK_FUNCTION (block))
1660 block = BLOCK_SUPERBLOCK (block);
1665 struct sal_chain *tmp_chain;
1667 /* Count the number of entries. */
1668 for (index = 0, tmp_chain = sal_chain; tmp_chain;
1669 tmp_chain = tmp_chain->next)
1673 sals.sals = (struct symtab_and_line *)
1674 xmalloc (index * sizeof (struct symtab_and_line));
1675 for (index = 0; sal_chain; sal_chain = sal_chain->next, index++)
1676 sals.sals[index] = sal_chain->sal;
1682 /* Commands to deal with catching exceptions. */
1685 catch_command_1 (arg, tempflag, from_tty)
1690 /* First, translate ARG into something we can deal with in terms
1693 struct symtabs_and_lines sals;
1694 struct symtab_and_line sal;
1695 register struct expression *cond = 0;
1696 register struct breakpoint *b;
1701 sal.line = sal.pc = sal.end = 0;
1704 /* If no arg given, or if first arg is 'if ', all active catch clauses
1705 are breakpointed. */
1707 if (!arg || (arg[0] == 'i' && arg[1] == 'f'
1708 && (arg[2] == ' ' || arg[2] == '\t')))
1710 /* Grab all active catch clauses. */
1711 sals = get_catch_sals (0);
1715 /* Grab selected catch clauses. */
1716 error ("catch NAME not implemeneted");
1718 /* This isn't used; I don't know what it was for. */
1719 sals = map_catch_names (arg, catch_breakpoint);
1727 for (i = 0; i < sals.nelts; i++)
1730 if (sal.pc == 0 && sal.symtab != 0)
1732 pc = find_line_pc (sal.symtab, sal.line);
1734 error ("No line %d in file \"%s\".",
1735 sal.line, sal.symtab->filename);
1742 if (arg[0] == 'i' && arg[1] == 'f'
1743 && (arg[2] == ' ' || arg[2] == '\t'))
1744 cond = (struct expression *) parse_c_1 ((arg += 2, &arg),
1745 block_for_pc (pc), 0);
1747 error ("Junk at end of arguments.");
1750 sals.sals[i].pc = pc;
1753 for (i = 0; i < sals.nelts; i++)
1758 describe_other_breakpoints (sal.pc);
1760 b = set_raw_breakpoint (sal);
1761 b->number = ++breakpoint_count;
1764 b->enable = temporary;
1766 printf ("Breakpoint %d at 0x%x", b->number, b->address);
1768 printf (": file %s, line %d.", b->symtab->filename, b->line_number);
1774 printf ("Multiple breakpoints were set.\n");
1775 printf ("Use the \"delete\" command to delete unwanted breakpoints.\n");
1781 /* These aren't used; I don't know what they were for. */
1782 /* Disable breakpoints on all catch clauses described in ARGS. */
1784 disable_catch (args)
1787 /* Map the disable command to catch clauses described in ARGS. */
1790 /* Enable breakpoints on all catch clauses described in ARGS. */
1795 /* Map the disable command to catch clauses described in ARGS. */
1798 /* Delete breakpoints on all catch clauses in the active scope. */
1803 /* Map the delete command to catch clauses described in ARGS. */
1808 catch_command (arg, from_tty)
1812 catch_command_1 (arg, 0, from_tty);
1816 clear_command (arg, from_tty)
1820 register struct breakpoint *b, *b1;
1821 struct symtabs_and_lines sals;
1822 struct symtab_and_line sal;
1823 register struct breakpoint *found;
1828 sals = decode_line_spec (arg, 1);
1832 sals.sals = (struct symtab_and_line *) xmalloc (sizeof (struct symtab_and_line));
1833 sal.line = default_breakpoint_line;
1834 sal.symtab = default_breakpoint_symtab;
1836 if (sal.symtab == 0)
1837 error ("No source file specified.");
1843 for (i = 0; i < sals.nelts; i++)
1845 /* If exact pc given, clear bpts at that pc.
1846 But if sal.pc is zero, clear all bpts on specified line. */
1848 found = (struct breakpoint *) 0;
1849 while (breakpoint_chain
1850 && (sal.pc ? breakpoint_chain->address == sal.pc
1851 : (breakpoint_chain->symtab == sal.symtab
1852 && breakpoint_chain->line_number == sal.line)))
1854 b1 = breakpoint_chain;
1855 breakpoint_chain = b1->next;
1862 && b->next->address != NULL
1863 && (sal.pc ? b->next->address == sal.pc
1864 : (b->next->symtab == sal.symtab
1865 && b->next->line_number == sal.line)))
1876 error ("No breakpoint at %s.", arg);
1878 error ("No breakpoint at this line.");
1881 if (found->next) from_tty = 1; /* Always report if deleted more than one */
1882 if (from_tty) printf ("Deleted breakpoint%s ", found->next ? "s" : "");
1885 if (from_tty) printf ("%d ", found->number);
1887 delete_breakpoint (found);
1890 if (from_tty) putchar ('\n');
1895 /* Delete breakpoint in BS if they are `delete' breakpoints.
1896 This is called after any breakpoint is hit, or after errors. */
1899 breakpoint_auto_delete (bs)
1902 for (; bs; bs = bs->next)
1903 if (bs->breakpoint_at && bs->breakpoint_at->enable == delete)
1904 delete_breakpoint (bs->breakpoint_at);
1907 /* Delete a breakpoint and clean up all traces of it in the data structures. */
1910 delete_breakpoint (bpt)
1911 struct breakpoint *bpt;
1913 register struct breakpoint *b;
1917 target_remove_breakpoint(bpt->address, bpt->shadow_contents);
1919 if (breakpoint_chain == bpt)
1920 breakpoint_chain = bpt->next;
1925 b->next = bpt->next;
1929 check_duplicates (bpt->address);
1931 free_command_lines (&bpt->commands);
1934 if (bpt->cond_string != NULL)
1935 free (bpt->cond_string);
1936 if (bpt->addr_string != NULL)
1937 free (bpt->addr_string);
1939 if (xgdb_verbose && bpt->number >=0)
1940 printf ("breakpoint #%d deleted\n", bpt->number);
1942 /* Be sure no bpstat's are pointing at it after it's been freed. */
1943 /* FIXME, how can we find all bpstat's? We just check stop_bpstat for now. */
1944 for (bs = stop_bpstat; bs; bs = bs->next)
1945 if (bs->breakpoint_at == bpt)
1946 bs->breakpoint_at = NULL;
1950 static void map_breakpoint_numbers ();
1953 delete_command (arg, from_tty)
1960 /* Ask user only if there are some breakpoints to delete. */
1962 || (breakpoint_chain && query ("Delete all breakpoints? ", 0, 0)))
1964 /* No arg; clear all breakpoints. */
1965 while (breakpoint_chain)
1966 delete_breakpoint (breakpoint_chain);
1970 map_breakpoint_numbers (arg, delete_breakpoint);
1973 /* Reset a breakpoint given it's struct breakpoint * BINT.
1974 The value we return ends up being the return value from catch_errors.
1975 Unused in this case. */
1978 breakpoint_re_set_one (bint)
1981 struct breakpoint *b = (struct breakpoint *)bint; /* get past catch_errs */
1983 struct symtabs_and_lines sals;
1984 struct symtab_and_line sal;
1987 if (b->address != NULL && b->addr_string != NULL)
1990 sals = decode_line_1 (&s, 1, (struct symtab *)NULL, 0);
1991 for (i = 0; i < sals.nelts; i++)
1995 b->symtab = sal.symtab;
1996 b->line_number = sal.line;
1997 if (sal.pc == 0 && sal.symtab != 0)
1999 sal.pc = find_line_pc (sal.symtab, sal.line);
2001 error ("No line %d in file \"%s\".",
2002 sal.line, sal.symtab->filename);
2004 b->address = sal.pc;
2006 if (b->cond_string != NULL)
2009 b->cond = parse_c_1 (&s, block_for_pc (sal.pc), 0);
2012 check_duplicates (b->address);
2020 /* Anything without a string can't be re-set. */
2021 delete_breakpoint (b);
2026 /* Re-set all breakpoints after symbols have been re-loaded. */
2028 breakpoint_re_set ()
2030 struct breakpoint *b;
2034 b->symtab = 0; /* Be sure we don't point to old dead symtab */
2035 (void) catch_errors (breakpoint_re_set_one, (char *) b,
2036 "Error in re-setting breakpoint:\n");
2039 /* Blank line to finish off all those mention() messages we just printed. */
2040 printf_filtered ("\n");
2043 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
2044 If from_tty is nonzero, it prints a message to that effect,
2045 which ends with a period (no newline). */
2048 set_ignore_count (bptnum, count, from_tty)
2049 int bptnum, count, from_tty;
2051 register struct breakpoint *b;
2057 if (b->number == bptnum)
2059 b->ignore_count = count;
2062 else if (count == 0)
2063 printf ("Will stop next time breakpoint %d is reached.", bptnum);
2064 else if (count == 1)
2065 printf ("Will ignore next crossing of breakpoint %d.", bptnum);
2067 printf ("Will ignore next %d crossings of breakpoint %d.",
2072 error ("No breakpoint number %d.", bptnum);
2075 /* Clear the ignore counts of all breakpoints. */
2077 breakpoint_clear_ignore_counts ()
2079 struct breakpoint *b;
2082 b->ignore_count = 0;
2085 /* Command to set ignore-count of breakpoint N to COUNT. */
2088 ignore_command (args, from_tty)
2096 error_no_arg ("a breakpoint number");
2098 num = get_number (&p);
2101 error ("Second argument (specified ignore-count) is missing.");
2103 set_ignore_count (num,
2104 longest_to_int (value_as_long (parse_and_eval (p))),
2109 /* Call FUNCTION on each of the breakpoints
2110 whose numbers are given in ARGS. */
2113 map_breakpoint_numbers (args, function)
2115 void (*function) ();
2117 register char *p = args;
2120 register struct breakpoint *b;
2123 error_no_arg ("one or more breakpoint numbers");
2129 num = get_number (&p1);
2132 if (b->number == num)
2137 printf ("No breakpoint number %d.\n", num);
2144 enable_breakpoint (bpt)
2145 struct breakpoint *bpt;
2147 bpt->enable = enabled;
2149 if (xgdb_verbose && bpt->number >= 0)
2150 printf ("breakpoint #%d enabled\n", bpt->number);
2152 check_duplicates (bpt->address);
2153 if (bpt->val != NULL)
2155 if (bpt->exp_valid_block != NULL
2156 && !contained_in (get_selected_block (), bpt->exp_valid_block))
2159 Cannot enable watchpoint %d because the block in which its expression\n\
2160 is valid is not currently in scope.\n", bpt->number);
2164 value_free (bpt->val);
2166 bpt->val = evaluate_expression (bpt->exp);
2167 release_value (bpt->val);
2173 enable_command (args, from_tty)
2177 struct breakpoint *bpt;
2179 ALL_BREAKPOINTS (bpt)
2180 enable_breakpoint (bpt);
2182 map_breakpoint_numbers (args, enable_breakpoint);
2186 disable_breakpoint (bpt)
2187 struct breakpoint *bpt;
2189 bpt->enable = disabled;
2191 if (xgdb_verbose && bpt->number >= 0)
2192 printf ("breakpoint #%d disabled\n", bpt->number);
2194 check_duplicates (bpt->address);
2199 disable_command (args, from_tty)
2203 register struct breakpoint *bpt;
2205 ALL_BREAKPOINTS (bpt)
2206 disable_breakpoint (bpt);
2208 map_breakpoint_numbers (args, disable_breakpoint);
2212 enable_once_breakpoint (bpt)
2213 struct breakpoint *bpt;
2215 bpt->enable = temporary;
2217 check_duplicates (bpt->address);
2222 enable_once_command (args, from_tty)
2226 map_breakpoint_numbers (args, enable_once_breakpoint);
2230 enable_delete_breakpoint (bpt)
2231 struct breakpoint *bpt;
2233 bpt->enable = delete;
2235 check_duplicates (bpt->address);
2240 enable_delete_command (args, from_tty)
2244 map_breakpoint_numbers (args, enable_delete_breakpoint);
2248 * Use default_breakpoint_'s, or nothing if they aren't valid.
2250 struct symtabs_and_lines
2251 decode_line_spec_1 (string, funfirstline)
2255 struct symtabs_and_lines sals;
2257 error ("Empty line specification.");
2258 if (default_breakpoint_valid)
2259 sals = decode_line_1 (&string, funfirstline,
2260 default_breakpoint_symtab, default_breakpoint_line);
2262 sals = decode_line_1 (&string, funfirstline, (struct symtab *)NULL, 0);
2264 error ("Junk at end of line specification: %s", string);
2269 /* Chain containing all defined enable commands. */
2271 extern struct cmd_list_element
2272 *enablelist, *disablelist,
2273 *deletelist, *enablebreaklist;
2275 extern struct cmd_list_element *cmdlist;
2278 _initialize_breakpoint ()
2280 breakpoint_chain = 0;
2281 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
2282 before a breakpoint is set. */
2283 breakpoint_count = 0;
2285 add_com ("ignore", class_breakpoint, ignore_command,
2286 "Set ignore-count of breakpoint number N to COUNT.");
2288 add_com ("commands", class_breakpoint, commands_command,
2289 "Set commands to be executed when a breakpoint is hit.\n\
2290 Give breakpoint number as argument after \"commands\".\n\
2291 With no argument, the targeted breakpoint is the last one set.\n\
2292 The commands themselves follow starting on the next line.\n\
2293 Type a line containing \"end\" to indicate the end of them.\n\
2294 Give \"silent\" as the first line to make the breakpoint silent;\n\
2295 then no output is printed when it is hit, except what the commands print.");
2297 add_com ("condition", class_breakpoint, condition_command,
2298 "Specify breakpoint number N to break only if COND is true.\n\
2299 N is an integer; COND is a C expression to be evaluated whenever\n\
2300 breakpoint N is reached. Actually break only when COND is nonzero.");
2302 add_com ("tbreak", class_breakpoint, tbreak_command,
2303 "Set a temporary breakpoint. Args like \"break\" command.\n\
2304 Like \"break\" except the breakpoint is only enabled temporarily,\n\
2305 so it will be disabled when hit. Equivalent to \"break\" followed\n\
2306 by using \"enable once\" on the breakpoint number.");
2308 add_prefix_cmd ("enable", class_breakpoint, enable_command,
2309 "Enable some breakpoints.\n\
2310 Give breakpoint numbers (separated by spaces) as arguments.\n\
2311 With no subcommand, breakpoints are enabled until you command otherwise.\n\
2312 This is used to cancel the effect of the \"disable\" command.\n\
2313 With a subcommand you can enable temporarily.",
2314 &enablelist, "enable ", 1, &cmdlist);
2316 add_abbrev_prefix_cmd ("breakpoints", class_breakpoint, enable_command,
2317 "Enable some breakpoints.\n\
2318 Give breakpoint numbers (separated by spaces) as arguments.\n\
2319 This is used to cancel the effect of the \"disable\" command.\n\
2320 May be abbreviated to simply \"enable\".\n",
2321 &enablebreaklist, "enable breakpoints ", 1, &enablelist);
2323 add_cmd ("once", no_class, enable_once_command,
2324 "Enable breakpoints for one hit. Give breakpoint numbers.\n\
2325 If a breakpoint is hit while enabled in this fashion, it becomes disabled.\n\
2326 See the \"tbreak\" command which sets a breakpoint and enables it once.",
2329 add_cmd ("delete", no_class, enable_delete_command,
2330 "Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
2331 If a breakpoint is hit while enabled in this fashion, it is deleted.",
2334 add_cmd ("delete", no_class, enable_delete_command,
2335 "Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
2336 If a breakpoint is hit while enabled in this fashion, it is deleted.",
2339 add_cmd ("once", no_class, enable_once_command,
2340 "Enable breakpoints for one hit. Give breakpoint numbers.\n\
2341 If a breakpoint is hit while enabled in this fashion, it becomes disabled.\n\
2342 See the \"tbreak\" command which sets a breakpoint and enables it once.",
2345 add_prefix_cmd ("disable", class_breakpoint, disable_command,
2346 "Disable some breakpoints.\n\
2347 Arguments are breakpoint numbers with spaces in between.\n\
2348 To disable all breakpoints, give no argument.\n\
2349 A disabled breakpoint is not forgotten, but has no effect until reenabled.",
2350 &disablelist, "disable ", 1, &cmdlist);
2351 add_com_alias ("dis", "disable", class_breakpoint, 1);
2352 add_com_alias ("disa", "disable", class_breakpoint, 1);
2354 add_cmd ("breakpoints", class_alias, disable_command,
2355 "Disable some breakpoints.\n\
2356 Arguments are breakpoint numbers with spaces in between.\n\
2357 To disable all breakpoints, give no argument.\n\
2358 A disabled breakpoint is not forgotten, but has no effect until reenabled.\n\
2359 This command may be abbreviated \"disable\".",
2362 add_prefix_cmd ("delete", class_breakpoint, delete_command,
2363 "Delete some breakpoints or auto-display expressions.\n\
2364 Arguments are breakpoint numbers with spaces in between.\n\
2365 To delete all breakpoints, give no argument.\n\
2367 Also a prefix command for deletion of other GDB objects.\n\
2368 The \"unset\" command is also an alias for \"delete\".",
2369 &deletelist, "delete ", 1, &cmdlist);
2370 add_com_alias ("d", "delete", class_breakpoint, 1);
2372 add_cmd ("breakpoints", class_alias, delete_command,
2373 "Delete some breakpoints or auto-display expressions.\n\
2374 Arguments are breakpoint numbers with spaces in between.\n\
2375 To delete all breakpoints, give no argument.\n\
2376 This command may be abbreviated \"delete\".",
2379 add_com ("clear", class_breakpoint, clear_command,
2380 "Clear breakpoint at specified line or function.\n\
2381 Argument may be line number, function name, or \"*\" and an address.\n\
2382 If line number is specified, all breakpoints in that line are cleared.\n\
2383 If function is specified, breakpoints at beginning of function are cleared.\n\
2384 If an address is specified, breakpoints at that address are cleared.\n\n\
2385 With no argument, clears all breakpoints in the line that the selected frame\n\
2388 See also the \"delete\" command which clears breakpoints by number.");
2390 add_com ("break", class_breakpoint, break_command,
2391 "Set breakpoint at specified line or function.\n\
2392 Argument may be line number, function name, or \"*\" and an address.\n\
2393 If line number is specified, break at start of code for that line.\n\
2394 If function is specified, break at start of code for that function.\n\
2395 If an address is specified, break at that exact address.\n\
2396 With no arg, uses current execution address of selected stack frame.\n\
2397 This is useful for breaking on return to a stack frame.\n\
2399 Multiple breakpoints at one place are permitted, and useful if conditional.\n\
2401 Do \"help breakpoints\" for info on other commands dealing with breakpoints.");
2402 add_com_alias ("b", "break", class_run, 1);
2403 add_com_alias ("br", "break", class_run, 1);
2404 add_com_alias ("bre", "break", class_run, 1);
2405 add_com_alias ("brea", "break", class_run, 1);
2407 add_info ("breakpoints", breakpoints_info,
2408 "Status of all breakpoints, or breakpoint number NUMBER.\n\
2409 Second column is \"y\" for enabled breakpoint, \"n\" for disabled,\n\
2410 \"o\" for enabled once (disable when hit), \"d\" for enable but delete when hit.\n\
2411 Then come the address and the file/line number.\n\n\
2412 Convenience variable \"$_\" and default examine address for \"x\"\n\
2413 are set to the address of the last breakpoint listed.\n\n\
2414 Convenience variable \"$bpnum\" contains the number of the last\n\
2417 add_com ("catch", class_breakpoint, catch_command,
2418 "Set breakpoints to catch exceptions that are raised.\n\
2419 Argument may be a single exception to catch, multiple exceptions\n\
2420 to catch, or the default exception \"default\". If no arguments\n\
2421 are given, breakpoints are set at all exception handlers catch clauses\n\
2422 within the current scope.\n\
2424 A condition specified for the catch applies to all breakpoints set\n\
2425 with this command\n\
2427 Do \"help breakpoints\" for info on other commands dealing with breakpoints.");
2429 add_com ("watch", class_breakpoint, watch_command,
2430 "Set a watchpoint for an expression.\n\
2431 A watchpoint stops execution of your program whenever the value of\n\
2432 an expression changes.");
2434 add_info ("watchpoints", watchpoints_info,
2435 "Status of all watchpoints, or watchpoint number NUMBER.\n\
2436 Second column is \"y\" for enabled watchpoints, \"n\" for disabled.");