1 /* Everything about breakpoints, for GDB.
2 Copyright (C) 1986, 1987 Free Software Foundation, Inc.
4 GDB is distributed in the hope that it will be useful, but WITHOUT ANY
5 WARRANTY. No author or distributor accepts responsibility to anyone
6 for the consequences of using it or for whether it serves any
7 particular purpose or works at all, unless he says so in writing.
8 Refer to the GDB General Public License for full details.
10 Everyone is granted permission to copy, modify and redistribute GDB,
11 but only under the conditions described in the GDB General Public
12 License. A copy of this license is supposed to have been given to you
13 along with GDB so you can know your rights and responsibilities. It
14 should be in a file named COPYING. Among other things, the copyright
15 notice and this notice must be preserved on all copies.
17 In other words, go ahead and share GDB, but don't try to stop
18 anyone else from sharing it farther. Help stamp out software hoarding!
22 #include "initialize.h"
29 /* This is the sequence of bytes we insert for a breakpoint. */
31 static char break_insn[] = BREAKPOINT;
33 /* States of enablement of breakpoint.
34 `temporary' means disable when hit.
35 `once' means delete when hit. */
37 enum enable { disabled, enabled, temporary, delete};
41 struct breakpoint *next;
42 /* Number assigned to distinguish breakpoints. */
44 /* Address to break at. */
46 /* Line number of this address. Redundant. */
48 /* Symtab of file of this address. Redundant. */
49 struct symtab *symtab;
50 /* Zero means disabled; remember the info but don't break here. */
52 /* Number of stops at this breakpoint that should
53 be continued automatically before really stopping. */
55 /* "Real" contents of byte where breakpoint has been inserted.
56 Valid only when breakpoints are in the program. */
57 char shadow_contents[sizeof break_insn];
58 /* Nonzero if this breakpoint is now inserted. */
60 /* Nonzero if this is not the first breakpoint in the list
61 for the given address. */
63 /* Chain of command lines to execute when this breakpoint is hit. */
64 struct command_line *commands;
65 /* Stack depth (frame). If nonzero, break only if fp equals this. */
67 /* Conditional. Break only if this expression's value is nonzero. */
68 struct expression *cond;
71 #define ALL_BREAKPOINTS(b) for (b = breakpoint_chain; b; b = b->next)
73 /* Chain of all breakpoints defined. */
75 struct breakpoint *breakpoint_chain;
77 /* Number of last breakpoint made. */
79 static int breakpoint_count;
81 /* Default address, symtab and line to put a breakpoint at
82 for "break" command with no arg.
83 if default_breakpoint_valid is zero, the other three are
84 not valid, and "break" with no arg is an error.
86 This set by print_stack_frame, which calls set_default_breakpoint. */
88 int default_breakpoint_valid;
89 CORE_ADDR default_breakpoint_address;
90 struct symtab *default_breakpoint_symtab;
91 int default_breakpoint_line;
93 /* Remaining commands (not yet executed)
94 of last breakpoint hit. */
96 struct command_line *breakpoint_commands;
100 extern char *read_line ();
102 static void delete_breakpoint ();
103 void clear_momentary_breakpoints ();
104 void breakpoint_auto_delete ();
106 /* condition N EXP -- set break condition of breakpoint N to EXP. */
109 condition_command (arg, from_tty)
113 register struct breakpoint *b;
116 register struct expression *expr;
119 error_no_arg ("breakpoint number");
122 while (*p >= '0' && *p <= '9') p++;
126 if (b->number == bnum)
134 printf ("Breakpoint %d now unconditional.\n", bnum);
138 if (*p != ' ' && *p != '\t')
139 error ("Arguments must be an integer (breakpoint number) and an expression.");
141 /* Find start of expression */
142 while (*p == ' ' || *p == '\t') p++;
145 b->cond = (struct expression *) parse_c_1 (&arg, block_for_pc (b->address), 0);
147 error ("Junk at end of expression");
152 error ("No breakpoint number %d.", bnum);
156 commands_command (arg)
159 register struct breakpoint *b;
160 register char *p, *p1;
162 struct command_line *l;
165 error_no_arg ("breakpoint number");
167 /* If we allowed this, we would have problems with when to
168 free the storage, if we change the commands currently
171 if (breakpoint_commands)
172 error ("Can't use the \"commands\" command among a breakpoint's commands.");
175 if (! (*p >= '0' && *p <= '9'))
176 error ("Argument must be integer (a breakpoint number).");
178 while (*p >= '0' && *p <= '9') p++;
180 error ("Unexpected extra arguments following breakpoint number.");
185 if (b->number == bnum)
187 if (input_from_terminal_p ())
188 printf ("Type commands for when breakpoint %d is hit, one per line.\n\
189 End with a line saying just \"end\".\n", bnum);
190 l = read_command_lines ();
191 free_command_lines (&b->commands);
195 error ("No breakpoint number %d.", bnum);
198 /* Called from command loop to execute the commands
199 associated with the breakpoint we just stopped at. */
202 do_breakpoint_commands ()
204 while (breakpoint_commands)
206 char *line = breakpoint_commands->line;
207 breakpoint_commands = breakpoint_commands->next;
208 execute_command (line, 0);
209 /* If command was "cont", breakpoint_commands is now 0,
210 of if we stopped at yet another breakpoint which has commands,
211 it is now the commands for the new breakpoint. */
213 clear_momentary_breakpoints ();
216 /* Used when the program is proceeded, to eliminate any remaining
217 commands attached to the previous breakpoint we stopped at. */
220 clear_breakpoint_commands ()
222 breakpoint_commands = 0;
223 breakpoint_auto_delete (0);
226 /* Functions to get and set the current list of pending
227 breakpoint commands. These are used by run_stack_dummy
228 to preserve the commands around a function call. */
230 struct command_line *
231 get_breakpoint_commands ()
233 return breakpoint_commands;
237 set_breakpoint_commands (cmds)
238 struct command_line *cmds;
240 breakpoint_commands = cmds;
243 /* insert_breakpoints is used when starting or continuing the program.
244 remove_breakpoints is used when the program stops.
245 Both return zero if successful,
246 or an `errno' value if could not write the inferior. */
249 insert_breakpoints ()
251 register struct breakpoint *b;
254 /* printf ("Inserting breakpoints.\n"); */
256 if (b->enable != disabled && ! b->inserted && ! b->duplicate)
258 read_memory (b->address, b->shadow_contents, sizeof break_insn);
259 val = write_memory (b->address, break_insn, sizeof break_insn);
262 /* printf ("Inserted breakpoint at 0x%x, shadow 0x%x, 0x%x.\n",
263 b->address, b->shadow_contents[0], b->shadow_contents[1]); */
270 remove_breakpoints ()
272 register struct breakpoint *b;
275 /* printf ("Removing breakpoints.\n"); */
279 val = write_memory (b->address, b->shadow_contents, sizeof break_insn);
283 /* printf ("Removed breakpoint at 0x%x, shadow 0x%x, 0x%x.\n",
284 b->address, b->shadow_contents[0], b->shadow_contents[1]); */
290 /* Clear the "inserted" flag in all breakpoints.
291 This is done when the inferior is loaded. */
294 mark_breakpoints_out ()
296 register struct breakpoint *b;
302 /* breakpoint_here_p (PC) returns 1 if an enabled breakpoint exists at PC.
303 When continuing from a location with a breakpoint,
304 we actually single step once before calling insert_breakpoints. */
307 breakpoint_here_p (pc)
310 register struct breakpoint *b;
313 if (b->enable != disabled && b->address == pc)
319 /* Return 0 if PC is not the address just after a breakpoint,
320 or -1 if breakpoint says do not stop now,
321 or -2 if breakpoint says it has deleted itself and don't stop,
322 or -3 if hit a breakpoint number -3 (delete when program stops),
323 or else the number of the breakpoint,
324 with 0x1000000 added for a silent breakpoint. */
327 breakpoint_stop_status (pc, frame)
331 register struct breakpoint *b;
332 register int cont = 0;
334 /* Get the address where the breakpoint would have been. */
335 pc -= DECR_PC_AFTER_BREAK;
338 if (b->enable != disabled && b->address == pc)
340 if (b->frame && b->frame != frame)
347 value_zero = value_zerop (evaluate_expression (b->cond));
350 if (b->cond && value_zero)
354 else if (b->ignore_count > 0)
361 if (b->enable == temporary)
362 b->enable = disabled;
363 breakpoint_commands = b->commands;
364 if (breakpoint_commands
365 && !strcmp ("silent", breakpoint_commands->line))
367 breakpoint_commands = breakpoint_commands->next;
368 return 0x1000000 + b->number;
382 register struct breakpoint *b;
383 register struct command_line *l;
384 register struct symbol *sym;
385 CORE_ADDR last_addr = -1;
388 if (bnum == -1 || bnum == b->number)
390 printf ("#%-3d %c 0x%08x ", b->number,
391 "nyod"[(int) b->enable],
393 last_addr = b->address;
396 sym = find_pc_function (b->address);
398 printf (" in %s (%s line %d)", SYMBOL_NAME (sym),
399 b->symtab->filename, b->line_number);
401 printf ("%s line %d", b->symtab->filename, b->line_number);
406 printf ("\tignore next %d hits\n", b->ignore_count);
408 printf ("\tstop only in stack frame at 0x%x\n", b->frame);
411 printf ("\tbreak only if ");
412 print_expression (b->cond, stdout);
418 printf ("\t%s\n", l->line);
424 set_next_address (last_addr);
428 breakpoints_info (bnum_exp)
434 bnum = parse_and_eval_address (bnum_exp);
435 else if (breakpoint_chain == 0)
436 printf ("No breakpoints.\n");
438 printf ("Breakpoints:\n\
439 Num Enb Address Where\n");
444 /* Print a message describing any breakpoints set at PC. */
447 describe_other_breakpoints (pc)
448 register CORE_ADDR pc;
450 register int others = 0;
451 register struct breakpoint *b;
454 if (b->address == pc)
458 printf ("Note: breakpoint%s ", (others > 1) ? "s" : "");
460 if (b->address == pc)
465 (b->enable == disabled) ? " (disabled)" : "",
466 (others > 1) ? "," : ((others == 1) ? " and" : ""));
468 printf (" also set at pc 0x%x\n", pc);
472 /* Set the default place to put a breakpoint
473 for the `break' command with no arguments. */
476 set_default_breakpoint (valid, addr, symtab, line)
479 struct symtab *symtab;
482 default_breakpoint_valid = valid;
483 default_breakpoint_address = addr;
484 default_breakpoint_symtab = symtab;
485 default_breakpoint_line = line;
488 /* Rescan breakpoints at address ADDRESS,
489 marking the first one as "first" and any others as "duplicates".
490 This is so that the bpt instruction is only inserted once. */
493 check_duplicates (address)
496 register struct breakpoint *b;
497 register int count = 0;
500 if (b->enable != disabled && b->address == address)
503 b->duplicate = count > 1;
507 /* Low level routine to set a breakpoint.
508 Takes as args the three things that every breakpoint must have.
509 Returns the breakpoint object so caller can set other things.
510 Does not set the breakpoint number!
511 Does not print anything. */
513 static struct breakpoint *
514 set_raw_breakpoint (sal)
515 struct symtab_and_line sal;
517 register struct breakpoint *b, *b1;
519 b = (struct breakpoint *) xmalloc (sizeof (struct breakpoint));
520 bzero (b, sizeof *b);
522 b->symtab = sal.symtab;
523 b->line_number = sal.line;
527 /* Add this breakpoint to the end of the chain
528 so that a list of breakpoints will come out in order
529 of increasing numbers. */
531 b1 = breakpoint_chain;
533 breakpoint_chain = b;
541 check_duplicates (sal.pc);
546 /* Set a breakpoint that will evaporate an end of command
547 at address specified by SAL.
548 Restrict it to frame FRAME if FRAME is nonzero. */
551 set_momentary_breakpoint (sal, frame)
552 struct symtab_and_line sal;
555 register struct breakpoint *b;
556 b = set_raw_breakpoint (sal);
563 clear_momentary_breakpoints ()
565 register struct breakpoint *b;
569 delete_breakpoint (b);
574 /* Set a breakpoint from a symtab and line.
575 If TEMPFLAG is nonzero, it is a temporary breakpoint.
576 Print the same confirmation messages that the breakpoint command prints. */
579 set_breakpoint (s, line, tempflag)
584 register struct breakpoint *b;
585 struct symtab_and_line sal;
589 sal.pc = find_line_pc (sal.symtab, sal.line);
591 error ("No line %d in file \"%s\".\n", sal.line, sal.symtab->filename);
594 describe_other_breakpoints (sal.pc);
596 b = set_raw_breakpoint (sal);
597 b->number = ++breakpoint_count;
600 b->enable = temporary;
602 printf ("Breakpoint %d at 0x%x", b->number, b->address);
604 printf (": file %s, line %d.", b->symtab->filename, b->line_number);
609 /* Set a breakpoint according to ARG (function, linenum or *address)
610 and make it temporary if TEMPFLAG is nonzero.
612 LINE_NUM is for C++. */
615 break_command_1 (arg, tempflag, from_tty, line_num)
617 int tempflag, from_tty, line_num;
619 struct symtabs_and_lines sals;
620 struct symtab_and_line sal;
621 register struct expression *cond = 0;
622 register struct breakpoint *b;
629 sal.line = sal.pc = sal.end = 0;
635 sals = decode_line_1 (&arg, 1, 0, 0);
637 if (! sals.nelts) return;
639 for (i = 0; i < sals.nelts; i++)
642 if (sal.pc == 0 && sal.symtab != 0)
644 pc = find_line_pc (sal.symtab, sal.line);
646 error ("No line %d in file \"%s\".",
647 sal.line, sal.symtab->filename);
653 if (arg[0] == 'i' && arg[1] == 'f'
654 && (arg[2] == ' ' || arg[2] == '\t'))
655 cond = (struct expression *) parse_c_1 ((arg += 2, &arg),
656 block_for_pc (pc), 0);
658 error ("Junk at end of arguments.");
661 sals.sals[i].pc = pc;
664 else if (default_breakpoint_valid)
666 sals.sals = (struct symtab_and_line *) malloc (sizeof (struct symtab_and_line));
667 sal.pc = default_breakpoint_address;
668 sal.line = default_breakpoint_line;
669 sal.symtab = default_breakpoint_symtab;
674 error ("No default breakpoint address now.");
676 for (i = 0; i < sals.nelts; i++)
679 sal.line += line_num; /** C++ **/
681 { /* get the pc for a particular line */
682 sal.pc = find_line_pc (sal.symtab, sal.line);
686 describe_other_breakpoints (sal.pc);
688 b = set_raw_breakpoint (sal);
689 b->number = ++breakpoint_count;
692 b->enable = temporary;
694 printf ("Breakpoint %d at 0x%x", b->number, b->address);
696 printf (": file %s, line %d.", b->symtab->filename, b->line_number);
703 break_command (arg, from_tty)
707 break_command_1 (arg, 0, from_tty, 0);
711 tbreak_command (arg, from_tty)
715 break_command_1 (arg, 1, from_tty, 0);
719 clear_command (arg, from_tty)
723 register struct breakpoint *b, *b1;
724 struct symtabs_and_lines sals;
725 struct symtab_and_line sal;
726 register struct breakpoint *found;
731 sals = decode_line_spec (arg, 1);
735 sals.sals = (struct symtab_and_line *) malloc (sizeof (struct symtab_and_line));
736 sal.line = default_breakpoint_line;
737 sal.symtab = default_breakpoint_symtab;
740 error ("No source file specified.");
746 for (i = 0; i < sals.nelts; i++)
748 /* If exact pc given, clear bpts at that pc.
749 But if sal.pc is zero, clear all bpts on specified line. */
751 found = (struct breakpoint *) 0;
752 while (breakpoint_chain
753 && (sal.pc ? breakpoint_chain->address == sal.pc
754 : (breakpoint_chain->symtab == sal.symtab
755 && breakpoint_chain->line_number == sal.line)))
757 b1 = breakpoint_chain;
758 breakpoint_chain = b1->next;
765 && (sal.pc ? b->next->address == sal.pc
766 : (b->next->symtab == sal.symtab
767 && b->next->line_number == sal.line)))
776 error ("No breakpoint at %s.", arg);
778 if (found->next) from_tty = 1; /* Always report if deleted more than one */
779 if (from_tty) printf ("Deleted breakpoint%s ", found->next ? "s" : "");
782 if (from_tty) printf ("%d ", found->number);
784 delete_breakpoint (found);
787 if (from_tty) putchar ('\n');
792 /* Delete breakpoint number BNUM if it is a `delete' breakpoint.
793 This is called after breakpoint BNUM has been hit.
794 Also delete any breakpoint numbered -3 unless there are breakpoint
795 commands to be executed. */
798 breakpoint_auto_delete (bnum)
801 register struct breakpoint *b;
804 if (b->number == bnum)
806 if (b->enable == delete)
807 delete_breakpoint (b);
810 if (breakpoint_commands == 0)
811 clear_momentary_breakpoints ();
815 delete_breakpoint (bpt)
816 struct breakpoint *bpt;
818 register struct breakpoint *b;
821 write_memory (bpt->address, bpt->shadow_contents, sizeof break_insn);
823 if (breakpoint_chain == bpt)
824 breakpoint_chain = bpt->next;
833 check_duplicates (bpt->address);
835 free_command_lines (&bpt->commands);
841 void map_breakpoint_numbers ();
844 delete_command (arg, from_tty)
848 register struct breakpoint *b, *b1;
852 if (!from_tty || query ("Delete all breakpoints? "))
854 /* No arg; clear all breakpoints. */
855 while (breakpoint_chain)
856 delete_breakpoint (breakpoint_chain);
860 map_breakpoint_numbers (arg, delete_breakpoint);
863 /* Delete all breakpoints.
864 Done when new symtabs are loaded, since the break condition expressions
865 may become invalid, and the breakpoints are probably wrong anyway. */
870 delete_command (0, 0);
873 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
874 If from_tty is nonzero, it prints a message to that effect,
875 which ends with a period (no newline). */
878 set_ignore_count (bptnum, count, from_tty)
879 int bptnum, count, from_tty;
881 register struct breakpoint *b;
887 if (b->number == bptnum)
889 b->ignore_count = count;
893 printf ("Will stop next time breakpoint %d is reached.", bptnum);
895 printf ("Will ignore next crossing of breakpoint %d.", bptnum);
897 printf ("Will ignore next %d crossings of breakpoint %d.",
902 error ("No breakpoint number %d.", bptnum);
905 /* Command to set ignore-count of breakpoint N to COUNT. */
908 ignore_command (args, from_tty)
916 error_no_arg ("a breakpoint number");
919 while (*p >= '0' && *p <= '9') p++;
920 if (*p && *p != ' ' && *p != '\t')
921 error ("First argument must be a breakpoint number.");
926 error ("Second argument (specified ignore-count) is missing.");
928 set_ignore_count (num, parse_and_eval_address (p), from_tty);
932 /* Call FUNCTION on each of the breakpoints
933 whose numbers are given in ARGS. */
936 map_breakpoint_numbers (args, function)
940 register char *p = args;
943 register struct breakpoint *b;
946 error_no_arg ("one or more breakpoint numbers");
951 while (*p1 >= '0' && *p1 <= '9') p1++;
952 if (*p1 && *p1 != ' ' && *p1 != '\t')
953 error ("Arguments must be breakpoint numbers.");
958 if (b->number == num)
963 printf ("No breakpoint number %d.\n", num);
966 while (*p == ' ' || *p == '\t') p++;
971 enable_breakpoint (bpt)
972 struct breakpoint *bpt;
974 bpt->enable = enabled;
976 check_duplicates (bpt->address);
980 enable_command (args)
983 map_breakpoint_numbers (args, enable_breakpoint);
987 disable_breakpoint (bpt)
988 struct breakpoint *bpt;
990 bpt->enable = disabled;
992 check_duplicates (bpt->address);
996 disable_command (args)
999 register struct breakpoint *bpt;
1001 ALL_BREAKPOINTS (bpt)
1002 disable_breakpoint (bpt);
1004 map_breakpoint_numbers (args, disable_breakpoint);
1008 enable_once_breakpoint (bpt)
1009 struct breakpoint *bpt;
1011 bpt->enable = temporary;
1013 check_duplicates (bpt->address);
1017 enable_once_command (args)
1020 map_breakpoint_numbers (args, enable_once_breakpoint);
1024 enable_delete_breakpoint (bpt)
1025 struct breakpoint *bpt;
1027 bpt->enable = delete;
1029 check_duplicates (bpt->address);
1033 enable_delete_command (args)
1036 map_breakpoint_numbers (args, enable_delete_breakpoint);
1040 /* Chain containing all defined enable commands. */
1042 struct cmd_list_element *enablelist;
1044 extern struct cmd_list_element *cmdlist;
1049 breakpoint_chain = 0;
1050 breakpoint_count = 0;
1053 add_com ("ignore", class_breakpoint, ignore_command,
1054 "Set ignore-count of breakpoint number N to COUNT.");
1056 add_com ("commands", class_breakpoint, commands_command,
1057 "Set commands to be executed when a breakpoint is hit.\n\
1058 Give breakpoint number as argument after \"commands\".\n\
1059 The commands themselves follow starting on the next line.\n\
1060 Type a line containing \"end\" to indicate the end of them.\n\
1061 Give \"silent\" as the first line to make the breakpoint silent;\n\
1062 then no output is printed when it is hit, except what the commands print.");
1064 add_com ("condition", class_breakpoint, condition_command,
1065 "Specify breakpoint number N to break only if COND is true.\n\
1066 N is an integer; COND is a C expression to be evaluated whenever\n\
1067 breakpoint N is reached. Actually break only when COND is nonzero.");
1069 add_com ("tbreak", class_breakpoint, tbreak_command,
1070 "Set a temporary breakpoint. Args like \"break\" command.\n\
1071 Like \"break\" except the breakpoint is only enabled temporarily,\n\
1072 so it will be disabled when hit. Equivalent to \"break\" followed\n\
1073 by using \"enable once\" on the breakpoint number.");
1075 add_prefix_cmd ("enable", class_breakpoint, enable_command,
1076 "Enable some breakpoints. Give breakpoint numbers as arguments.\n\
1077 With no subcommand, breakpoints are enabled until you command otherwise.\n\
1078 This is used to cancel the effect of the \"disable\" command.\n\
1079 With a subcommand you can enable temporarily.",
1080 &enablelist, "enable ", 1, &cmdlist);
1082 add_cmd ("delete", 0, enable_delete_command,
1083 "Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
1084 If a breakpoint is hit while enabled in this fashion, it is deleted.",
1087 add_cmd ("once", 0, enable_once_command,
1088 "Enable breakpoints for one hit. Give breakpoint numbers.\n\
1089 If a breakpoint is hit while enabled in this fashion, it becomes disabled.\n\
1090 See the \"tbreak\" command which sets a breakpoint and enables it once.",
1093 add_com ("disable", class_breakpoint, disable_command,
1094 "Disable some breakpoints. Give breakpoint numbers as arguments.\n\
1095 With no arguments, disable all breakpoints.\n\
1096 A disabled breakpoint is not forgotten,\n\
1097 but it has no effect until enabled again.");
1098 add_com_alias ("dis", "disable", class_breakpoint, 1);
1100 add_com ("delete", class_breakpoint, delete_command,
1101 "Delete breakpoints, specifying breakpoint numbers; or all breakpoints.\n\
1102 Arguments are breakpoint numbers with spaces in between.\n\
1103 To delete all breakpoints, give no argument.");
1104 add_com_alias ("d", "delete", class_breakpoint, 1);
1106 add_com ("clear", class_breakpoint, clear_command,
1107 "Clear breakpoint at specified line or function.\n\
1108 Argument may be line number, function name, or \"*\" and an address.\n\
1109 If line number is specified, all breakpoints in that line are cleared.\n\
1110 If function is specified, breakpoints at beginning of function are cleared.\n\
1111 If an address is specified, breakpoints at that address are cleared.\n\n\
1112 With no argument, clears all breakpoints in the line that the selected frame\n\
1115 See also the \"delete\" command which clears breakpoints by number.");
1117 add_com ("break", class_breakpoint, break_command,
1118 "Set breakpoint at specified line or function.\n\
1119 Argument may be line number, function name, or \"*\" and an address.\n\
1120 If line number is specified, break at start of code for that line.\n\
1121 If function is specified, break at start of code for that function.\n\
1122 If an address is specified, break at that exact address.\n\
1123 With no arg, uses current execution address of selected stack frame.\n\
1124 This is useful for breaking on return to a stack frame.\n\
1126 Multiple breakpoints at one place are permitted, and useful if conditional.\n\
1128 Do \"help breakpoints\" for info on other commands dealing with breakpoints.");
1129 add_com_alias ("b", "break", class_run, 1);
1130 add_com_alias ("br", "break", class_run, 1);
1131 add_com_alias ("bre", "break", class_run, 1);
1132 add_com_alias ("brea", "break", class_run, 1);
1134 add_info ("breakpoints", breakpoints_info,
1135 "Status of all breakpoints, or breakpoint number NUMBER.\n\
1136 Second column is \"y\" for enabled breakpoint, \"n\" for disabled,\n\
1137 \"o\" for enabled once (disable when hit), \"d\" for enable but delete when hit.\n\
1138 Then come the address and the file/line number.\n\n\
1139 Convenience variable \"$_\" and default examine address for \"x\"\n\
1140 are set to the address of the last breakpoint listed.");