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_long (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 occurred in testing breakpoint condition.");
830 if (b->cond && value_is_zero)
834 else if (b->ignore_count > 0)
841 /* We will stop here */
842 if (b->enable == temporary)
843 b->enable = disabled;
844 bs->commands = b->commands;
847 if (bs->commands && !strcmp ("silent", bs->commands->line))
849 bs->commands = bs->commands->next;
860 bs->next = NULL; /* Terminate the chain */
861 bs = root_bs->next; /* Re-grab the head of the chain */
866 #if DECR_PC_AFTER_BREAK != 0 || defined (SHIFT_INST_REGS)
870 #if defined (SHIFT_INST_REGS)
872 CORE_ADDR pc = read_register (PC_REGNUM);
873 CORE_ADDR npc = read_register (NPC_REGNUM);
876 write_register (NNPC_REGNUM, npc);
877 write_register (NPC_REGNUM, pc);
880 #else /* No SHIFT_INST_REGS. */
882 #endif /* No SHIFT_INST_REGS. */
884 #endif /* DECR_PC_AFTER_BREAK != 0. */
890 bpstat_should_step ()
892 struct breakpoint *b;
894 if (b->enable != disabled && b->exp != NULL)
899 /* Print information on breakpoint number BNUM, or -1 if all.
900 If WATCHPOINTS is zero, process only breakpoints; if WATCHPOINTS
901 is nonzero, process only watchpoints. */
904 breakpoint_1 (bnum, watchpoints)
908 register struct breakpoint *b;
909 register struct command_line *l;
910 register struct symbol *sym;
911 CORE_ADDR last_addr = (CORE_ADDR)-1;
912 int header_printed = 0;
915 if (bnum == -1 || bnum == b->number)
917 if (b->address == NULL && !watchpoints)
921 error ("That is a watchpoint, not a breakpoint.");
923 if (b->address != NULL && watchpoints)
927 error ("That is a breakpoint, not a watchpoint.");
933 printf_filtered (" Enb Expression\n");
934 else if (addressprint)
935 printf_filtered (" Enb Address Where\n");
937 printf_filtered (" Enb Where\n");
941 printf_filtered ("#%-3d %c ", b->number, "nyod"[(int) b->enable]);
942 if (b->address == NULL) {
943 printf_filtered (" ");
944 print_expression (b->exp, stdout);
947 printf_filtered (" 0x%08x ", b->address);
949 last_addr = b->address;
952 sym = find_pc_function (b->address);
955 fputs_filtered (" in ", stdout);
956 fputs_demangled (SYMBOL_NAME (sym), stdout, 1);
957 fputs_filtered (" at ", stdout);
959 fputs_filtered (b->symtab->filename, stdout);
960 printf_filtered (":%d", b->line_number);
963 print_address_symbolic (b->address, stdout, demangle, " ");
966 printf_filtered ("\n");
969 printf_filtered ("\tstop only in stack frame at 0x%x\n", b->frame);
972 printf_filtered ("\tstop only if ");
973 print_expression (b->cond, stdout);
974 printf_filtered ("\n");
977 printf_filtered ("\tignore next %d hits\n", b->ignore_count);
978 if ((l = b->commands))
981 fputs_filtered ("\t", stdout);
982 fputs_filtered (l->line, stdout);
983 fputs_filtered ("\n", stdout);
990 char *which = watchpoints ? "watch" : "break";
992 printf_filtered ("No %spoints.\n", which);
994 printf_filtered ("No %spoint numbered %d.\n", which, bnum);
997 /* Compare against (CORE_ADDR)-1 in case some compiler decides
998 that a comparison of an unsigned with -1 is always false. */
999 if (last_addr != (CORE_ADDR)-1)
1000 set_next_address (last_addr);
1005 breakpoints_info (bnum_exp, from_tty)
1012 bnum = parse_and_eval_address (bnum_exp);
1014 breakpoint_1 (bnum, 0);
1019 watchpoints_info (bnum_exp, from_tty)
1026 bnum = parse_and_eval_address (bnum_exp);
1028 breakpoint_1 (bnum, 1);
1031 /* Print a message describing any breakpoints set at PC. */
1034 describe_other_breakpoints (pc)
1035 register CORE_ADDR pc;
1037 register int others = 0;
1038 register struct breakpoint *b;
1041 if (b->address == pc)
1045 printf ("Note: breakpoint%s ", (others > 1) ? "s" : "");
1047 if (b->address == pc)
1052 (b->enable == disabled) ? " (disabled)" : "",
1053 (others > 1) ? "," : ((others == 1) ? " and" : ""));
1055 printf ("also set at pc 0x%x.\n", pc);
1059 /* Set the default place to put a breakpoint
1060 for the `break' command with no arguments. */
1063 set_default_breakpoint (valid, addr, symtab, line)
1066 struct symtab *symtab;
1069 default_breakpoint_valid = valid;
1070 default_breakpoint_address = addr;
1071 default_breakpoint_symtab = symtab;
1072 default_breakpoint_line = line;
1075 /* Rescan breakpoints at address ADDRESS,
1076 marking the first one as "first" and any others as "duplicates".
1077 This is so that the bpt instruction is only inserted once. */
1080 check_duplicates (address)
1083 register struct breakpoint *b;
1084 register int count = 0;
1086 if (address == NULL) /* Watchpoints are uninteresting */
1090 if (b->enable != disabled && b->address == address)
1093 b->duplicate = count > 1;
1097 /* Low level routine to set a breakpoint.
1098 Takes as args the three things that every breakpoint must have.
1099 Returns the breakpoint object so caller can set other things.
1100 Does not set the breakpoint number!
1101 Does not print anything.
1103 ==> This routine should not be called if there is a chance of later
1104 error(); otherwise it leaves a bogus breakpoint on the chain. Validate
1105 your arguments BEFORE calling this routine! */
1107 static struct breakpoint *
1108 set_raw_breakpoint (sal)
1109 struct symtab_and_line sal;
1111 register struct breakpoint *b, *b1;
1113 b = (struct breakpoint *) xmalloc (sizeof (struct breakpoint));
1114 bzero (b, sizeof *b);
1115 b->address = sal.pc;
1116 b->symtab = sal.symtab;
1117 b->line_number = sal.line;
1118 b->enable = enabled;
1121 b->ignore_count = 0;
1125 /* Add this breakpoint to the end of the chain
1126 so that a list of breakpoints will come out in order
1127 of increasing numbers. */
1129 b1 = breakpoint_chain;
1131 breakpoint_chain = b;
1139 check_duplicates (sal.pc);
1144 /* Set a breakpoint that will evaporate an end of command
1145 at address specified by SAL.
1146 Restrict it to frame FRAME if FRAME is nonzero. */
1149 set_momentary_breakpoint (sal, frame)
1150 struct symtab_and_line sal;
1153 register struct breakpoint *b;
1154 b = set_raw_breakpoint (sal);
1157 b->frame = (frame ? FRAME_FP (frame) : 0);
1161 clear_momentary_breakpoints ()
1163 register struct breakpoint *b;
1165 if (b->number == -3)
1167 delete_breakpoint (b);
1172 /* Tell the user we have just set a breakpoint B. */
1175 struct breakpoint *b;
1179 printf_filtered ("Watchpoint %d: ", b->number);
1180 print_expression (b->exp, stdout);
1184 printf_filtered ("Breakpoint %d at 0x%x", b->number, b->address);
1186 printf_filtered (": file %s, line %d.",
1187 b->symtab->filename, b->line_number);
1189 printf_filtered ("\n");
1193 /* Nobody calls this currently. */
1194 /* Set a breakpoint from a symtab and line.
1195 If TEMPFLAG is nonzero, it is a temporary breakpoint.
1196 ADDR_STRING is a malloc'd string holding the name of where we are
1197 setting the breakpoint. This is used later to re-set it after the
1198 program is relinked and symbols are reloaded.
1199 Print the same confirmation messages that the breakpoint command prints. */
1202 set_breakpoint (s, line, tempflag, addr_string)
1208 register struct breakpoint *b;
1209 struct symtab_and_line sal;
1213 sal.pc = find_line_pc (sal.symtab, sal.line);
1215 error ("No line %d in file \"%s\".\n", sal.line, sal.symtab->filename);
1218 describe_other_breakpoints (sal.pc);
1220 b = set_raw_breakpoint (sal);
1221 set_breakpoint_count (breakpoint_count + 1);
1222 b->number = breakpoint_count;
1224 b->addr_string = addr_string;
1226 b->enable = temporary;
1233 /* Set a breakpoint according to ARG (function, linenum or *address)
1234 and make it temporary if TEMPFLAG is nonzero. */
1237 break_command_1 (arg, tempflag, from_tty)
1239 int tempflag, from_tty;
1241 struct symtabs_and_lines sals;
1242 struct symtab_and_line sal;
1243 register struct expression *cond = 0;
1244 register struct breakpoint *b;
1246 /* Pointers in arg to the start, and one past the end, of the condition. */
1247 char *cond_start = NULL;
1249 /* Pointers in arg to the start, and one past the end,
1250 of the address part. */
1251 char *addr_start = NULL;
1260 sal.line = sal.pc = sal.end = 0;
1263 /* If no arg given, or if first arg is 'if ', use the default breakpoint. */
1265 if (!arg || (arg[0] == 'i' && arg[1] == 'f'
1266 && (arg[2] == ' ' || arg[2] == '\t')))
1268 if (default_breakpoint_valid)
1270 sals.sals = (struct symtab_and_line *)
1271 xmalloc (sizeof (struct symtab_and_line));
1272 sal.pc = default_breakpoint_address;
1273 sal.line = default_breakpoint_line;
1274 sal.symtab = default_breakpoint_symtab;
1279 error ("No default breakpoint address now.");
1285 /* Force almost all breakpoints to be in terms of the
1286 current_source_symtab (which is decode_line_1's default). This
1287 should produce the results we want almost all of the time while
1288 leaving default_breakpoint_* alone. */
1289 if (default_breakpoint_valid
1290 && (!current_source_symtab
1291 || (arg && (*arg == '+' || *arg == '-'))))
1292 sals = decode_line_1 (&arg, 1, default_breakpoint_symtab,
1293 default_breakpoint_line);
1295 sals = decode_line_1 (&arg, 1, (struct symtab *)NULL, 0);
1303 for (i = 0; i < sals.nelts; i++)
1306 if (sal.pc == 0 && sal.symtab != 0)
1308 pc = find_line_pc (sal.symtab, sal.line);
1310 error ("No line %d in file \"%s\".",
1311 sal.line, sal.symtab->filename);
1318 if (arg[0] == 'i' && arg[1] == 'f'
1319 && (arg[2] == ' ' || arg[2] == '\t'))
1323 cond = parse_c_1 (&arg, block_for_pc (pc), 0);
1327 error ("Junk at end of arguments.");
1329 sals.sals[i].pc = pc;
1332 for (i = 0; i < sals.nelts; i++)
1337 describe_other_breakpoints (sal.pc);
1339 b = set_raw_breakpoint (sal);
1340 set_breakpoint_count (breakpoint_count + 1);
1341 b->number = breakpoint_count;
1345 b->addr_string = savestring (addr_start, addr_end - addr_start);
1347 b->cond_string = savestring (cond_start, cond_end - cond_start);
1350 b->enable = temporary;
1357 printf ("Multiple breakpoints were set.\n");
1358 printf ("Use the \"delete\" command to delete unwanted breakpoints.\n");
1364 break_command (arg, from_tty)
1368 break_command_1 (arg, 0, from_tty);
1372 tbreak_command (arg, from_tty)
1376 break_command_1 (arg, 1, from_tty);
1381 watch_command (arg, from_tty)
1385 struct breakpoint *b;
1386 struct symtab_and_line sal;
1387 struct expression *exp;
1388 struct block *exp_valid_block;
1395 /* Parse arguments. */
1396 innermost_block = NULL;
1397 exp = parse_c_expression (arg);
1398 exp_valid_block = innermost_block;
1399 val = evaluate_expression (exp);
1400 release_value (val);
1402 /* Now set up the breakpoint. */
1403 b = set_raw_breakpoint (sal);
1404 set_breakpoint_count (breakpoint_count + 1);
1405 b->number = breakpoint_count;
1407 b->exp_valid_block = exp_valid_block;
1410 b->cond_string = NULL;
1415 * Helper routine for the until_command routine in infcmd.c. Here
1416 * because it uses the mechanisms of breakpoints.
1420 until_break_command (arg, from_tty)
1424 struct symtabs_and_lines sals;
1425 struct symtab_and_line sal;
1426 FRAME prev_frame = get_prev_frame (selected_frame);
1428 clear_proceed_status ();
1430 /* Set a breakpoint where the user wants it and at return from
1433 if (default_breakpoint_valid)
1434 sals = decode_line_1 (&arg, 1, default_breakpoint_symtab,
1435 default_breakpoint_line);
1437 sals = decode_line_1 (&arg, 1, (struct symtab *)NULL, 0);
1439 if (sals.nelts != 1)
1440 error ("Couldn't get information on specified line.");
1443 free (sals.sals); /* malloc'd, so freed */
1446 error ("Junk at end of arguments.");
1448 if (sal.pc == 0 && sal.symtab != 0)
1449 sal.pc = find_line_pc (sal.symtab, sal.line);
1452 error ("No line %d in file \"%s\".", sal.line, sal.symtab->filename);
1454 set_momentary_breakpoint (sal, selected_frame);
1456 /* Keep within the current frame */
1460 struct frame_info *fi;
1462 fi = get_frame_info (prev_frame);
1463 sal = find_pc_line (fi->pc, 0);
1465 set_momentary_breakpoint (sal, prev_frame);
1468 proceed (-1, -1, 0);
1472 /* These aren't used; I don't konw what they were for. */
1473 /* Set a breakpoint at the catch clause for NAME. */
1475 catch_breakpoint (name)
1481 disable_catch_breakpoint ()
1486 delete_catch_breakpoint ()
1491 enable_catch_breakpoint ()
1498 struct sal_chain *next;
1499 struct symtab_and_line sal;
1503 /* This isn't used; I don't know what it was for. */
1504 /* For each catch clause identified in ARGS, run FUNCTION
1505 with that clause as an argument. */
1506 static struct symtabs_and_lines
1507 map_catch_names (args, function)
1511 register char *p = args;
1513 struct symtabs_and_lines sals;
1515 struct sal_chain *sal_chain = 0;
1519 error_no_arg ("one or more catch names");
1527 /* Don't swallow conditional part. */
1528 if (p1[0] == 'i' && p1[1] == 'f'
1529 && (p1[2] == ' ' || p1[2] == '\t'))
1535 while (isalnum (*p1) || *p1 == '_' || *p1 == '$')
1539 if (*p1 && *p1 != ' ' && *p1 != '\t')
1540 error ("Arguments must be catch names.");
1546 struct sal_chain *next
1547 = (struct sal_chain *)alloca (sizeof (struct sal_chain));
1548 next->next = sal_chain;
1549 next->sal = get_catch_sal (p);
1554 printf ("No catch clause for exception %s.\n", p);
1559 while (*p == ' ' || *p == '\t') p++;
1564 /* This shares a lot of code with `print_frame_label_vars' from stack.c. */
1566 static struct symtabs_and_lines
1567 get_catch_sals (this_level_only)
1568 int this_level_only;
1570 extern struct blockvector *blockvector_for_pc ();
1571 register struct blockvector *bl;
1572 register struct block *block;
1573 int index, have_default = 0;
1574 struct frame_info *fi;
1576 struct symtabs_and_lines sals;
1577 struct sal_chain *sal_chain = 0;
1578 char *blocks_searched;
1580 /* Not sure whether an error message is always the correct response,
1581 but it's better than a core dump. */
1582 if (selected_frame == NULL)
1583 error ("No selected frame.");
1584 block = get_frame_block (selected_frame);
1585 fi = get_frame_info (selected_frame);
1592 error ("No symbol table info available.\n");
1594 bl = blockvector_for_pc (BLOCK_END (block) - 4, &index);
1595 blocks_searched = (char *) alloca (BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
1596 bzero (blocks_searched, BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
1600 CORE_ADDR end = BLOCK_END (block) - 4;
1603 if (bl != blockvector_for_pc (end, &index))
1604 error ("blockvector blotch");
1605 if (BLOCKVECTOR_BLOCK (bl, index) != block)
1606 error ("blockvector botch");
1607 last_index = BLOCKVECTOR_NBLOCKS (bl);
1610 /* Don't print out blocks that have gone by. */
1611 while (index < last_index
1612 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < pc)
1615 while (index < last_index
1616 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < end)
1618 if (blocks_searched[index] == 0)
1620 struct block *b = BLOCKVECTOR_BLOCK (bl, index);
1623 register struct symbol *sym;
1625 nsyms = BLOCK_NSYMS (b);
1627 for (i = 0; i < nsyms; i++)
1629 sym = BLOCK_SYM (b, i);
1630 if (! strcmp (SYMBOL_NAME (sym), "default"))
1636 if (SYMBOL_CLASS (sym) == LOC_LABEL)
1638 struct sal_chain *next = (struct sal_chain *)
1639 alloca (sizeof (struct sal_chain));
1640 next->next = sal_chain;
1641 next->sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
1645 blocks_searched[index] = 1;
1651 if (sal_chain && this_level_only)
1654 /* After handling the function's top-level block, stop.
1655 Don't continue to its superblock, the block of
1656 per-file symbols. */
1657 if (BLOCK_FUNCTION (block))
1659 block = BLOCK_SUPERBLOCK (block);
1664 struct sal_chain *tmp_chain;
1666 /* Count the number of entries. */
1667 for (index = 0, tmp_chain = sal_chain; tmp_chain;
1668 tmp_chain = tmp_chain->next)
1672 sals.sals = (struct symtab_and_line *)
1673 xmalloc (index * sizeof (struct symtab_and_line));
1674 for (index = 0; sal_chain; sal_chain = sal_chain->next, index++)
1675 sals.sals[index] = sal_chain->sal;
1681 /* Commands to deal with catching exceptions. */
1684 catch_command_1 (arg, tempflag, from_tty)
1689 /* First, translate ARG into something we can deal with in terms
1692 struct symtabs_and_lines sals;
1693 struct symtab_and_line sal;
1694 register struct expression *cond = 0;
1695 register struct breakpoint *b;
1700 sal.line = sal.pc = sal.end = 0;
1703 /* If no arg given, or if first arg is 'if ', all active catch clauses
1704 are breakpointed. */
1706 if (!arg || (arg[0] == 'i' && arg[1] == 'f'
1707 && (arg[2] == ' ' || arg[2] == '\t')))
1709 /* Grab all active catch clauses. */
1710 sals = get_catch_sals (0);
1714 /* Grab selected catch clauses. */
1715 error ("catch NAME not implemeneted");
1717 /* This isn't used; I don't know what it was for. */
1718 sals = map_catch_names (arg, catch_breakpoint);
1726 for (i = 0; i < sals.nelts; i++)
1729 if (sal.pc == 0 && sal.symtab != 0)
1731 pc = find_line_pc (sal.symtab, sal.line);
1733 error ("No line %d in file \"%s\".",
1734 sal.line, sal.symtab->filename);
1741 if (arg[0] == 'i' && arg[1] == 'f'
1742 && (arg[2] == ' ' || arg[2] == '\t'))
1743 cond = (struct expression *) parse_c_1 ((arg += 2, &arg),
1744 block_for_pc (pc), 0);
1746 error ("Junk at end of arguments.");
1749 sals.sals[i].pc = pc;
1752 for (i = 0; i < sals.nelts; i++)
1757 describe_other_breakpoints (sal.pc);
1759 b = set_raw_breakpoint (sal);
1760 b->number = ++breakpoint_count;
1763 b->enable = temporary;
1765 printf ("Breakpoint %d at 0x%x", b->number, b->address);
1767 printf (": file %s, line %d.", b->symtab->filename, b->line_number);
1773 printf ("Multiple breakpoints were set.\n");
1774 printf ("Use the \"delete\" command to delete unwanted breakpoints.\n");
1780 /* These aren't used; I don't know what they were for. */
1781 /* Disable breakpoints on all catch clauses described in ARGS. */
1783 disable_catch (args)
1786 /* Map the disable command to catch clauses described in ARGS. */
1789 /* Enable breakpoints on all catch clauses described in ARGS. */
1794 /* Map the disable command to catch clauses described in ARGS. */
1797 /* Delete breakpoints on all catch clauses in the active scope. */
1802 /* Map the delete command to catch clauses described in ARGS. */
1807 catch_command (arg, from_tty)
1811 catch_command_1 (arg, 0, from_tty);
1815 clear_command (arg, from_tty)
1819 register struct breakpoint *b, *b1;
1820 struct symtabs_and_lines sals;
1821 struct symtab_and_line sal;
1822 register struct breakpoint *found;
1827 sals = decode_line_spec (arg, 1);
1831 sals.sals = (struct symtab_and_line *) xmalloc (sizeof (struct symtab_and_line));
1832 sal.line = default_breakpoint_line;
1833 sal.symtab = default_breakpoint_symtab;
1835 if (sal.symtab == 0)
1836 error ("No source file specified.");
1842 for (i = 0; i < sals.nelts; i++)
1844 /* If exact pc given, clear bpts at that pc.
1845 But if sal.pc is zero, clear all bpts on specified line. */
1847 found = (struct breakpoint *) 0;
1848 while (breakpoint_chain
1849 && (sal.pc ? breakpoint_chain->address == sal.pc
1850 : (breakpoint_chain->symtab == sal.symtab
1851 && breakpoint_chain->line_number == sal.line)))
1853 b1 = breakpoint_chain;
1854 breakpoint_chain = b1->next;
1861 && b->next->address != NULL
1862 && (sal.pc ? b->next->address == sal.pc
1863 : (b->next->symtab == sal.symtab
1864 && b->next->line_number == sal.line)))
1875 error ("No breakpoint at %s.", arg);
1877 error ("No breakpoint at this line.");
1880 if (found->next) from_tty = 1; /* Always report if deleted more than one */
1881 if (from_tty) printf ("Deleted breakpoint%s ", found->next ? "s" : "");
1884 if (from_tty) printf ("%d ", found->number);
1886 delete_breakpoint (found);
1889 if (from_tty) putchar ('\n');
1894 /* Delete breakpoint in BS if they are `delete' breakpoints.
1895 This is called after any breakpoint is hit, or after errors. */
1898 breakpoint_auto_delete (bs)
1901 for (; bs; bs = bs->next)
1902 if (bs->breakpoint_at && bs->breakpoint_at->enable == delete)
1903 delete_breakpoint (bs->breakpoint_at);
1906 /* Delete a breakpoint and clean up all traces of it in the data structures. */
1909 delete_breakpoint (bpt)
1910 struct breakpoint *bpt;
1912 register struct breakpoint *b;
1916 target_remove_breakpoint(bpt->address, bpt->shadow_contents);
1918 if (breakpoint_chain == bpt)
1919 breakpoint_chain = bpt->next;
1924 b->next = bpt->next;
1928 check_duplicates (bpt->address);
1930 free_command_lines (&bpt->commands);
1933 if (bpt->cond_string != NULL)
1934 free (bpt->cond_string);
1935 if (bpt->addr_string != NULL)
1936 free (bpt->addr_string);
1938 if (xgdb_verbose && bpt->number >=0)
1939 printf ("breakpoint #%d deleted\n", bpt->number);
1941 /* Be sure no bpstat's are pointing at it after it's been freed. */
1942 /* FIXME, how can we find all bpstat's? We just check stop_bpstat for now. */
1943 for (bs = stop_bpstat; bs; bs = bs->next)
1944 if (bs->breakpoint_at == bpt)
1945 bs->breakpoint_at = NULL;
1949 static void map_breakpoint_numbers ();
1952 delete_command (arg, from_tty)
1959 /* Ask user only if there are some breakpoints to delete. */
1961 || (breakpoint_chain && query ("Delete all breakpoints? ", 0, 0)))
1963 /* No arg; clear all breakpoints. */
1964 while (breakpoint_chain)
1965 delete_breakpoint (breakpoint_chain);
1969 map_breakpoint_numbers (arg, delete_breakpoint);
1972 /* Reset a breakpoint given it's struct breakpoint * BINT.
1973 The value we return ends up being the return value from catch_errors.
1974 Unused in this case. */
1977 breakpoint_re_set_one (bint)
1980 struct breakpoint *b = (struct breakpoint *)bint; /* get past catch_errs */
1982 struct symtabs_and_lines sals;
1983 struct symtab_and_line sal;
1986 if (b->address != NULL && b->addr_string != NULL)
1989 sals = decode_line_1 (&s, 1, (struct symtab *)NULL, 0);
1990 for (i = 0; i < sals.nelts; i++)
1994 b->symtab = sal.symtab;
1995 b->line_number = sal.line;
1996 if (sal.pc == 0 && sal.symtab != 0)
1998 sal.pc = find_line_pc (sal.symtab, sal.line);
2000 error ("No line %d in file \"%s\".",
2001 sal.line, sal.symtab->filename);
2003 b->address = sal.pc;
2005 if (b->cond_string != NULL)
2008 b->cond = parse_c_1 (&s, block_for_pc (sal.pc), 0);
2011 check_duplicates (b->address);
2019 /* Anything without a string can't be re-set. */
2020 delete_breakpoint (b);
2025 /* Re-set all breakpoints after symbols have been re-loaded. */
2027 breakpoint_re_set ()
2029 struct breakpoint *b;
2033 b->symtab = 0; /* Be sure we don't point to old dead symtab */
2034 (void) catch_errors (breakpoint_re_set_one, (char *) b,
2035 "Error in re-setting breakpoint");
2038 /* Blank line to finish off all those mention() messages we just printed. */
2039 printf_filtered ("\n");
2042 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
2043 If from_tty is nonzero, it prints a message to that effect,
2044 which ends with a period (no newline). */
2047 set_ignore_count (bptnum, count, from_tty)
2048 int bptnum, count, from_tty;
2050 register struct breakpoint *b;
2056 if (b->number == bptnum)
2058 b->ignore_count = count;
2061 else if (count == 0)
2062 printf ("Will stop next time breakpoint %d is reached.", bptnum);
2063 else if (count == 1)
2064 printf ("Will ignore next crossing of breakpoint %d.", bptnum);
2066 printf ("Will ignore next %d crossings of breakpoint %d.",
2071 error ("No breakpoint number %d.", bptnum);
2074 /* Clear the ignore counts of all breakpoints. */
2076 breakpoint_clear_ignore_counts ()
2078 struct breakpoint *b;
2081 b->ignore_count = 0;
2084 /* Command to set ignore-count of breakpoint N to COUNT. */
2087 ignore_command (args, from_tty)
2095 error_no_arg ("a breakpoint number");
2097 num = get_number (&p);
2100 error ("Second argument (specified ignore-count) is missing.");
2102 set_ignore_count (num,
2103 longest_to_int (value_as_long (parse_and_eval (p))),
2108 /* Call FUNCTION on each of the breakpoints
2109 whose numbers are given in ARGS. */
2112 map_breakpoint_numbers (args, function)
2114 void (*function) ();
2116 register char *p = args;
2119 register struct breakpoint *b;
2122 error_no_arg ("one or more breakpoint numbers");
2128 num = get_number (&p1);
2131 if (b->number == num)
2136 printf ("No breakpoint number %d.\n", num);
2143 enable_breakpoint (bpt)
2144 struct breakpoint *bpt;
2146 bpt->enable = enabled;
2148 if (xgdb_verbose && bpt->number >= 0)
2149 printf ("breakpoint #%d enabled\n", bpt->number);
2151 check_duplicates (bpt->address);
2152 if (bpt->val != NULL)
2154 if (bpt->exp_valid_block != NULL
2155 && !contained_in (get_selected_block (), bpt->exp_valid_block))
2158 Cannot enable watchpoint %d because the block in which its expression\n\
2159 is valid is not currently in scope.\n", bpt->number);
2163 value_free (bpt->val);
2165 bpt->val = evaluate_expression (bpt->exp);
2166 release_value (bpt->val);
2172 enable_command (args, from_tty)
2176 struct breakpoint *bpt;
2178 ALL_BREAKPOINTS (bpt)
2179 enable_breakpoint (bpt);
2181 map_breakpoint_numbers (args, enable_breakpoint);
2185 disable_breakpoint (bpt)
2186 struct breakpoint *bpt;
2188 bpt->enable = disabled;
2190 if (xgdb_verbose && bpt->number >= 0)
2191 printf ("breakpoint #%d disabled\n", bpt->number);
2193 check_duplicates (bpt->address);
2198 disable_command (args, from_tty)
2202 register struct breakpoint *bpt;
2204 ALL_BREAKPOINTS (bpt)
2205 disable_breakpoint (bpt);
2207 map_breakpoint_numbers (args, disable_breakpoint);
2211 enable_once_breakpoint (bpt)
2212 struct breakpoint *bpt;
2214 bpt->enable = temporary;
2216 check_duplicates (bpt->address);
2221 enable_once_command (args, from_tty)
2225 map_breakpoint_numbers (args, enable_once_breakpoint);
2229 enable_delete_breakpoint (bpt)
2230 struct breakpoint *bpt;
2232 bpt->enable = delete;
2234 check_duplicates (bpt->address);
2239 enable_delete_command (args, from_tty)
2243 map_breakpoint_numbers (args, enable_delete_breakpoint);
2247 * Use default_breakpoint_'s, or nothing if they aren't valid.
2249 struct symtabs_and_lines
2250 decode_line_spec_1 (string, funfirstline)
2254 struct symtabs_and_lines sals;
2256 error ("Empty line specification.");
2257 if (default_breakpoint_valid)
2258 sals = decode_line_1 (&string, funfirstline,
2259 default_breakpoint_symtab, default_breakpoint_line);
2261 sals = decode_line_1 (&string, funfirstline, (struct symtab *)NULL, 0);
2263 error ("Junk at end of line specification: %s", string);
2268 /* Chain containing all defined enable commands. */
2270 extern struct cmd_list_element
2271 *enablelist, *disablelist,
2272 *deletelist, *enablebreaklist;
2274 extern struct cmd_list_element *cmdlist;
2277 _initialize_breakpoint ()
2279 breakpoint_chain = 0;
2280 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
2281 before a breakpoint is set. */
2282 breakpoint_count = 0;
2284 add_com ("ignore", class_breakpoint, ignore_command,
2285 "Set ignore-count of breakpoint number N to COUNT.");
2287 add_com ("commands", class_breakpoint, commands_command,
2288 "Set commands to be executed when a breakpoint is hit.\n\
2289 Give breakpoint number as argument after \"commands\".\n\
2290 With no argument, the targeted breakpoint is the last one set.\n\
2291 The commands themselves follow starting on the next line.\n\
2292 Type a line containing \"end\" to indicate the end of them.\n\
2293 Give \"silent\" as the first line to make the breakpoint silent;\n\
2294 then no output is printed when it is hit, except what the commands print.");
2296 add_com ("condition", class_breakpoint, condition_command,
2297 "Specify breakpoint number N to break only if COND is true.\n\
2298 N is an integer; COND is a C expression to be evaluated whenever\n\
2299 breakpoint N is reached. Actually break only when COND is nonzero.");
2301 add_com ("tbreak", class_breakpoint, tbreak_command,
2302 "Set a temporary breakpoint. Args like \"break\" command.\n\
2303 Like \"break\" except the breakpoint is only enabled temporarily,\n\
2304 so it will be disabled when hit. Equivalent to \"break\" followed\n\
2305 by using \"enable once\" on the breakpoint number.");
2307 add_prefix_cmd ("enable", class_breakpoint, enable_command,
2308 "Enable some breakpoints.\n\
2309 Give breakpoint numbers (separated by spaces) as arguments.\n\
2310 With no subcommand, breakpoints are enabled until you command otherwise.\n\
2311 This is used to cancel the effect of the \"disable\" command.\n\
2312 With a subcommand you can enable temporarily.",
2313 &enablelist, "enable ", 1, &cmdlist);
2315 add_abbrev_prefix_cmd ("breakpoints", class_breakpoint, enable_command,
2316 "Enable some breakpoints.\n\
2317 Give breakpoint numbers (separated by spaces) as arguments.\n\
2318 This is used to cancel the effect of the \"disable\" command.\n\
2319 May be abbreviated to simply \"enable\".\n",
2320 &enablebreaklist, "enable breakpoints ", 1, &enablelist);
2322 add_cmd ("once", no_class, enable_once_command,
2323 "Enable breakpoints for one hit. Give breakpoint numbers.\n\
2324 If a breakpoint is hit while enabled in this fashion, it becomes disabled.\n\
2325 See the \"tbreak\" command which sets a breakpoint and enables it once.",
2328 add_cmd ("delete", no_class, enable_delete_command,
2329 "Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
2330 If a breakpoint is hit while enabled in this fashion, it is deleted.",
2333 add_cmd ("delete", no_class, enable_delete_command,
2334 "Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
2335 If a breakpoint is hit while enabled in this fashion, it is deleted.",
2338 add_cmd ("once", no_class, enable_once_command,
2339 "Enable breakpoints for one hit. Give breakpoint numbers.\n\
2340 If a breakpoint is hit while enabled in this fashion, it becomes disabled.\n\
2341 See the \"tbreak\" command which sets a breakpoint and enables it once.",
2344 add_prefix_cmd ("disable", class_breakpoint, disable_command,
2345 "Disable some breakpoints.\n\
2346 Arguments are breakpoint numbers with spaces in between.\n\
2347 To disable all breakpoints, give no argument.\n\
2348 A disabled breakpoint is not forgotten, but has no effect until reenabled.",
2349 &disablelist, "disable ", 1, &cmdlist);
2350 add_com_alias ("dis", "disable", class_breakpoint, 1);
2351 add_com_alias ("disa", "disable", class_breakpoint, 1);
2353 add_cmd ("breakpoints", class_alias, disable_command,
2354 "Disable some breakpoints.\n\
2355 Arguments are breakpoint numbers with spaces in between.\n\
2356 To disable all breakpoints, give no argument.\n\
2357 A disabled breakpoint is not forgotten, but has no effect until reenabled.\n\
2358 This command may be abbreviated \"disable\".",
2361 add_prefix_cmd ("delete", class_breakpoint, delete_command,
2362 "Delete some breakpoints or auto-display expressions.\n\
2363 Arguments are breakpoint numbers with spaces in between.\n\
2364 To delete all breakpoints, give no argument.\n\
2366 Also a prefix command for deletion of other GDB objects.\n\
2367 The \"unset\" command is also an alias for \"delete\".",
2368 &deletelist, "delete ", 1, &cmdlist);
2369 add_com_alias ("d", "delete", class_breakpoint, 1);
2371 add_cmd ("breakpoints", class_alias, delete_command,
2372 "Delete some breakpoints or auto-display expressions.\n\
2373 Arguments are breakpoint numbers with spaces in between.\n\
2374 To delete all breakpoints, give no argument.\n\
2375 This command may be abbreviated \"delete\".",
2378 add_com ("clear", class_breakpoint, clear_command,
2379 "Clear breakpoint at specified line or function.\n\
2380 Argument may be line number, function name, or \"*\" and an address.\n\
2381 If line number is specified, all breakpoints in that line are cleared.\n\
2382 If function is specified, breakpoints at beginning of function are cleared.\n\
2383 If an address is specified, breakpoints at that address are cleared.\n\n\
2384 With no argument, clears all breakpoints in the line that the selected frame\n\
2387 See also the \"delete\" command which clears breakpoints by number.");
2389 add_com ("break", class_breakpoint, break_command,
2390 "Set breakpoint at specified line or function.\n\
2391 Argument may be line number, function name, or \"*\" and an address.\n\
2392 If line number is specified, break at start of code for that line.\n\
2393 If function is specified, break at start of code for that function.\n\
2394 If an address is specified, break at that exact address.\n\
2395 With no arg, uses current execution address of selected stack frame.\n\
2396 This is useful for breaking on return to a stack frame.\n\
2398 Multiple breakpoints at one place are permitted, and useful if conditional.\n\
2400 Do \"help breakpoints\" for info on other commands dealing with breakpoints.");
2401 add_com_alias ("b", "break", class_run, 1);
2402 add_com_alias ("br", "break", class_run, 1);
2403 add_com_alias ("bre", "break", class_run, 1);
2404 add_com_alias ("brea", "break", class_run, 1);
2406 add_info ("breakpoints", breakpoints_info,
2407 "Status of all breakpoints, or breakpoint number NUMBER.\n\
2408 Second column is \"y\" for enabled breakpoint, \"n\" for disabled,\n\
2409 \"o\" for enabled once (disable when hit), \"d\" for enable but delete when hit.\n\
2410 Then come the address and the file/line number.\n\n\
2411 Convenience variable \"$_\" and default examine address for \"x\"\n\
2412 are set to the address of the last breakpoint listed.\n\n\
2413 Convenience variable \"$bpnum\" contains the number of the last\n\
2416 add_com ("catch", class_breakpoint, catch_command,
2417 "Set breakpoints to catch exceptions that are raised.\n\
2418 Argument may be a single exception to catch, multiple exceptions\n\
2419 to catch, or the default exception \"default\". If no arguments\n\
2420 are given, breakpoints are set at all exception handlers catch clauses\n\
2421 within the current scope.\n\
2423 A condition specified for the catch applies to all breakpoints set\n\
2424 with this command\n\
2426 Do \"help breakpoints\" for info on other commands dealing with breakpoints.");
2428 add_com ("watch", class_breakpoint, watch_command,
2429 "Set a watchpoint for an expression.\n\
2430 A watchpoint stops execution of your program whenever the value of\n\
2431 an expression changes.");
2433 add_info ("watchpoints", watchpoints_info,
2434 "Status of all watchpoints, or watchpoint number NUMBER.\n\
2435 Second column is \"y\" for enabled watchpoints, \"n\" for disabled.");