44 error (
_(
"Already in reverse mode. Use '%s' or 'set exec-dir forward'."),
105 #define ALL_BOOKMARKS(B) for ((B) = bookmark_chain; (B); (B) = (B)->next) 107 #define ALL_BOOKMARKS_SAFE(B,TMP) \ 108 for ((B) = bookmark_chain; \ 109 (B) ? ((TMP) = (B)->next, 1) : 0; \ 129 if (bookmark_id == NULL)
130 error (
_(
"target_get_bookmark failed."));
212 if (args == NULL || args[0] ==
'\0')
214 if (from_tty && !
query (
_(
"Delete all bookmarks? ")))
226 warning (
_(
"No bookmark #%d."), num);
237 const char *p = args;
239 if (args == NULL || args[0] ==
'\0')
240 error (
_(
"Command requires an argument."));
251 if (args[0] ==
'\'' || args[0] ==
'\"')
254 if (args[strlen (args) - 1] != args[0])
255 error (
_(
"Unbalanced quotes: %s"), args);
264 error (
_(
"goto-bookmark: invalid bookmark number '%s'."), p);
277 error (
_(
"goto-bookmark: no bookmark found for '%s'."), p);
289 if (bnum == -1 || bnum == b->
number)
299 if (bnum > 0 && matched == 0)
312 else if (args == NULL || *args ==
'\0')
329 Step program backward until it reaches the beginning of another source line.\n\ 330 Argument N means do this N times (or till program stops for another reason).")
335 Step program backward, proceeding through subroutine calls.\n\ 336 Like the \"reverse-step\" command as long as subroutine calls do not happen;\n\ 337 when they do, the call is treated as one instruction.\n\ 338 Argument N means do this N times (or till program stops for another reason).")
343 Step backward exactly one instruction.\n\ 344 Argument N means do this N times (or till program stops for another reason).")
349 Step backward one instruction, but proceed through called subroutines.\n\ 350 Argument N means do this N times (or till program stops for another reason).")
355 Continue program being debugged but run it in reverse.\n\ 356 If proceeding from breakpoint, a number N may be used as an argument,\n\ 357 which means to set the ignore count of that breakpoint to N - 1 (so that\n\ 358 the breakpoint won't break until the Nth time it is reached)."));
362 Execute backward until just before selected stack frame is called."));
365 Set a bookmark in the program's execution history.\n\ 366 A bookmark represents a point in the execution history \n\ 367 that can be returned to at a later point in the debug session."));
369 Status of user-settable bookmarks.\n\ 370 Bookmarks are user-settable markers representing a point in the \n\ 371 execution history that can be returned to later in the same debug \n\ 374 Delete a bookmark from the bookmark list.\n\ 375 Argument is a bookmark number or numbers,\n\ 376 or no argument to delete all bookmarks.\n"),
379 Go to an earlier-bookmarked point in the program's execution history.\n\ 380 Argument is the bookmark number of a bookmark saved earlier by using \n\ 381 the 'bookmark' command, or the special arguments:\n\ 382 start (beginning of recording)\n\ 383 end (end of recording)\n"));
#define target_can_execute_reverse
#define target_get_bookmark(ARGS, FROM_TTY)
static void reverse_step(const char *args, int from_tty)
struct frame_info * get_current_frame(void)
static void delete_all_bookmarks(void)
void warning(const char *fmt,...)
int query(const char *ctlstr,...)
static void exec_reverse_once(const char *cmd, const char *args, int from_tty)
struct cmd_list_element * add_info(const char *name, cmd_const_cfunc_ftype *fun, const char *doc)
struct cmd_list_element * deletelist
struct cmd_list_element * add_cmd(const char *name, enum command_class theclass, const char *doc, struct cmd_list_element **list)
static void reverse_next(const char *args, int from_tty)
static struct bookmark * bookmark_chain
struct regcache * get_current_regcache(void)
static void delete_bookmark_command(const char *args, int from_tty)
void printf_filtered(const char *format,...)
const char * paddress(struct gdbarch *gdbarch, CORE_ADDR addr)
void execute_command(const char *, int)
static int bookmark_count
scoped_restore_tmpl< T > make_scoped_restore(T *var)
enum exec_direction_kind execution_direction
static void info_bookmarks_command(const char *args, int from_tty)
struct symtab_and_line find_pc_line(CORE_ADDR pc, int notcurrent)
void _initialize_reverse(void)
struct cmd_list_element * add_com_alias(const char *name, const char *oldname, enum command_class theclass, int abbrev_flag)
struct symtab_and_line sal
#define ALL_BOOKMARKS_SAFE(B, TMP)
static int delete_one_bookmark(int num)
static int startswith(const char *string, const char *pattern)
static void save_bookmark_command(const char *args, int from_tty)
static void reverse_continue(const char *args, int from_tty)
static void reverse_finish(const char *args, int from_tty)
static void goto_bookmark_command(const char *args, int from_tty)
static void reverse_stepi(const char *args, int from_tty)
CORE_ADDR regcache_read_pc(struct regcache *regcache)
static void reverse_nexti(const char *args, int from_tty)
struct program_space * pspace
std::string string_printf(const char *fmt,...)
static int bookmark_1(int bnum)
struct cmd_list_element * add_com(const char *name, enum command_class theclass, cmd_const_cfunc_ftype *fun, const char *doc)
#define target_goto_bookmark(ARG, FROM_TTY)
struct program_space * get_frame_program_space(struct frame_info *frame)
void error(const char *fmt,...)
int get_number(const char **pp)