94 struct obstack obstack;
97 obstack_init (&obstack);
100 obstack_1grow (&obstack,
'\"');
101 for (i = 0; i < strlen (argv[0]); i++)
106 obstack_grow (&obstack,
"\\\\", 2);
109 obstack_grow (&obstack,
"\\a", 2);
112 obstack_grow (&obstack,
"\\b", 2);
115 obstack_grow (&obstack,
"\\f", 2);
118 obstack_grow (&obstack,
"\\n", 2);
121 obstack_grow (&obstack,
"\\r", 2);
124 obstack_grow (&obstack,
"\\t", 2);
127 obstack_grow (&obstack,
"\\v", 2);
130 obstack_grow (&obstack,
"\\\"", 2);
133 if (isprint (argv[0][i]))
134 obstack_grow (&obstack, argv[0] + i, 1);
140 (
unsigned char) argv[0][i]);
141 obstack_grow (&obstack, tmp, strlen (tmp));
146 obstack_1grow (&obstack,
'\"');
149 for (i = 1; i < argc; i++)
151 obstack_1grow (&obstack,
',');
152 obstack_grow (&obstack, argv[i], strlen (argv[i]));
154 obstack_1grow (&obstack,
'\0');
156 ret = xstrdup (obstack_finish (&obstack));
157 obstack_free (&obstack, NULL);
169 char *address = NULL;
173 int ignore_count = 0;
174 char *condition = NULL;
181 char *extra_string = NULL;
185 HARDWARE_OPT, TEMP_OPT, CONDITION_OPT,
186 IGNORE_COUNT_OPT, THREAD_OPT, PENDING_OPT, DISABLE_OPT,
189 static const struct mi_opt opts[] =
191 {
"h", HARDWARE_OPT, 0},
193 {
"c", CONDITION_OPT, 1},
194 {
"i", IGNORE_COUNT_OPT, 1},
195 {
"p", THREAD_OPT, 1},
196 {
"f", PENDING_OPT, 0},
197 {
"d", DISABLE_OPT, 0},
198 {
"a", TRACEPOINT_OPT, 0},
209 int opt =
mi_getopt (
"-break-insert", argc, argv,
213 switch ((
enum opt) opt)
224 case IGNORE_COUNT_OPT:
225 ignore_count = atol (oarg);
228 thread = atol (oarg);
243 error (
_(
"-%s-insert: Missing <location>"),
244 dprintf ?
"dprintf" :
"break");
245 address = argv[oind];
248 int format_num = oind + 1;
250 if (hardware || tracepoint)
251 error (
_(
"-dprintf-insert: does not support -h or -a"));
252 if (format_num >= argc)
253 error (
_(
"-dprintf-insert: Missing <format>"));
261 error (
_(
"-break-insert: Garbage following <location>"));
296 ops, 0, enabled, 0, 0);
333 error (
_(
"Usage: tracepoint-number passcount"));
346 error (
_(
"Could not find tracepoint %d"), n);
365 static const struct mi_opt opts[] =
368 {
"a", ACCESS_OPT, 0},
378 int opt =
mi_getopt (
"-break-watch", argc, argv,
383 switch ((
enum opt) opt)
394 error (
_(
"-break-watch: Missing <expression>"));
396 error (
_(
"-break-watch: Garbage following <expression>"));
412 error (
_(
"-break-watch: Unknown watchpoint type."));
443 error (
_(
"USAGE: %s <BKPT> [<COMMAND> [<COMMAND>...]]"), command);
445 bnum = strtol (argv[0], &endptr, 0);
446 if (endptr == argv[0])
447 error (
_(
"breakpoint number argument \"%s\" is not a number."),
449 else if (*endptr !=
'\0')
450 error (
_(
"junk at the end of breakpoint number argument \"%s\"."),
455 error (
_(
"breakpoint %d not found."), bnum);
void awatch_command_wrapper(char *arg, int from_tty, int internal)
void mi_cmd_break_passcount(char *command, char **argv, int argc)
void check_tracepoint_command(char *line, void *closure)
struct cleanup * setup_breakpoint_reporting(void)
static char * mi_argv_to_format(char **argv, int argc)
struct command_line * read_command_lines_1(char *(*read_next_line_func)(void), int parse_commands, void(*validator)(char *, void *), void *closure)
static void breakpoint_notify(struct breakpoint *b)
static char * mi_read_next_line(void)
struct breakpoint_ops dprintf_breakpoint_ops
struct tracepoint * get_tracepoint(int num)
void rwatch_command_wrapper(char *arg, int from_tty, int internal)
struct breakpoint_ops tracepoint_breakpoint_ops
void null_cleanup(void *arg)
void mi_cmd_dprintf_insert(char *command, char **argv, int argc)
void breakpoint_set_commands(struct breakpoint *b, struct command_line *commands)
int mi_getopt(const char *prefix, int argc, char **argv, const struct mi_opt *opts, int *oind, char **oarg)
struct cleanup * make_cleanup_restore_integer(int *variable)
static int mi_command_line_array_cnt
void mi_cmd_break_commands(char *command, char **argv, int argc)
struct observer * observer_attach_breakpoint_created(observer_breakpoint_created_ftype *f)
struct cleanup * make_cleanup(make_cleanup_ftype *function, void *arg)
struct gdbarch * get_current_arch(void)
struct breakpoint * get_breakpoint(int num)
struct breakpoint_ops bkpt_breakpoint_ops
static char ** mi_command_line_array
static int mi_command_line_array_ptr
int create_breakpoint(struct gdbarch *gdbarch, char *arg, char *cond_string, int thread, char *extra_string, int parse_arg, int tempflag, enum bptype type_wanted, int ignore_count, enum auto_boolean pending_break_support, const struct breakpoint_ops *ops, int from_tty, int enabled, int internal, unsigned flags)
void break_command(char *arg, int from_tty)
int xsnprintf(char *str, size_t size, const char *format,...)
void watch_command_wrapper(char *arg, int from_tty, int internal)
enum gdb_rc gdb_breakpoint_query(struct ui_out *uiout, int bnum, char **error_message)
void mi_cmd_break_watch(char *command, char **argv, int argc)
static void mi_cmd_break_insert_1(int dprintf, char *command, char **argv, int argc)
static int mi_can_breakpoint_notify
struct ui_out * current_uiout
static int mi_breakpoint_observers_installed
int is_tracepoint(const struct breakpoint *b)
void error(const char *fmt,...)
void do_cleanups(struct cleanup *old_chain)
void mi_cmd_break_insert(char *command, char **argv, int argc)
void observer_notify_breakpoint_modified(struct breakpoint *b)