void mi_cmd_catch_assert (char *cmd, char *argv[], int argc) { struct gdbarch *gdbarch = get_current_arch(); char *condition = NULL; int enabled = 1; int temp = 0; int oind = 0; char *oarg; enum opt { OPT_CONDITION, OPT_DISABLED, OPT_TEMP, }; static const struct mi_opt opts[] = { { "c", OPT_CONDITION, 1}, { "d", OPT_DISABLED, 0 }, { "t", OPT_TEMP, 0 }, { 0, 0, 0 } }; for (;;) { int opt = mi_getopt ("-catch-assert", argc, argv, opts, &oind, &oarg); if (opt < 0) break; switch ((enum opt) opt) { case OPT_CONDITION: condition = oarg; break; case OPT_DISABLED: enabled = 0; break; case OPT_TEMP: temp = 1; break; } } /* This command does not accept any argument. Make sure the user did not provide any. */ if (oind != argc) error (_("Invalid argument: %s"), argv[oind]); setup_breakpoint_reporting (); /* create_ada_exception_catchpoint needs CONDITION to be xstrdup'ed, and will assume control of its lifetime. */ if (condition != NULL) condition = xstrdup (condition); create_ada_exception_catchpoint (gdbarch, ada_catch_assert, NULL, condition, temp, enabled, 0); }
void mi_cmd_catch_assert (const char *cmd, char *argv[], int argc) { struct gdbarch *gdbarch = get_current_arch(); std::string condition; int enabled = 1; int temp = 0; int oind = 0; char *oarg; enum opt { OPT_CONDITION, OPT_DISABLED, OPT_TEMP, }; static const struct mi_opt opts[] = { { "c", OPT_CONDITION, 1}, { "d", OPT_DISABLED, 0 }, { "t", OPT_TEMP, 0 }, { 0, 0, 0 } }; for (;;) { int opt = mi_getopt ("-catch-assert", argc, argv, opts, &oind, &oarg); if (opt < 0) break; switch ((enum opt) opt) { case OPT_CONDITION: condition.assign (oarg); break; case OPT_DISABLED: enabled = 0; break; case OPT_TEMP: temp = 1; break; } } /* This command does not accept any argument. Make sure the user did not provide any. */ if (oind != argc) error (_("Invalid argument: %s"), argv[oind]); scoped_restore restore_breakpoint_reporting = setup_breakpoint_reporting (); create_ada_exception_catchpoint (gdbarch, ada_catch_assert, std::string (), condition, temp, enabled, 0); }
void mi_cmd_catch_exception (const char *cmd, char *argv[], int argc) { struct gdbarch *gdbarch = get_current_arch(); std::string condition; int enabled = 1; std::string exception_name; int temp = 0; enum ada_exception_catchpoint_kind ex_kind = ada_catch_exception; int oind = 0; char *oarg; enum opt { OPT_CONDITION, OPT_DISABLED, OPT_EXCEPTION_NAME, OPT_TEMP, OPT_UNHANDLED, }; static const struct mi_opt opts[] = { { "c", OPT_CONDITION, 1}, { "d", OPT_DISABLED, 0 }, { "e", OPT_EXCEPTION_NAME, 1 }, { "t", OPT_TEMP, 0 }, { "u", OPT_UNHANDLED, 0}, { 0, 0, 0 } }; for (;;) { int opt = mi_getopt ("-catch-exception", argc, argv, opts, &oind, &oarg); if (opt < 0) break; switch ((enum opt) opt) { case OPT_CONDITION: condition.assign (oarg); break; case OPT_DISABLED: enabled = 0; break; case OPT_EXCEPTION_NAME: exception_name = oarg; break; case OPT_TEMP: temp = 1; break; case OPT_UNHANDLED: ex_kind = ada_catch_exception_unhandled; break; } } /* This command does not accept any argument. Make sure the user did not provide any. */ if (oind != argc) error (_("Invalid argument: %s"), argv[oind]); /* Specifying an exception name does not make sense when requesting an unhandled exception breakpoint. */ if (ex_kind == ada_catch_exception_unhandled && !exception_name.empty ()) error (_("\"-e\" and \"-u\" are mutually exclusive")); scoped_restore restore_breakpoint_reporting = setup_breakpoint_reporting (); create_ada_exception_catchpoint (gdbarch, ex_kind, exception_name, condition, temp, enabled, 0); }