This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [reverse/record] adjust_pc_after_break in reverse execution mode?


teawater wrote:
Sorry I send too much Email. I found that:

      if (singlestep_breakpoints_inserted_p
          || !ptid_equal (ecs->ptid, inferior_ptid)
          || !currently_stepping (ecs->event_thread)
          || ecs->event_thread->prev_pc == breakpoint_pc)
        regcache_write_pc (regcache, breakpoint_pc);

Before write_pc, there are a lot of thing to check. Do we  need to
check it in record_wait?
If so, it actually useless cause it will be set back in adjust_pc_after_break?
Maybe we can let adjust_pc_after_break disable in replay mode.

How do you think?

I think we should leave adjust_pc_after_break alone, and change record_wait so that it adjusts the pc by adding decr_pc_after_break(gdbarch) when appropriate.

Whenever possible, gdb should not need to know the difference
between replay and live debugging.  This keeps things simple,
and preserves modularity.

Of course, you don't have access to the "ecs" object, which
is local to infrun.  But you do know whether or not gdb is
stepping.  And (for now) you know that there is only one
thread, so you can (for now) ignore the thread id (ptid).

The value of "step" that was passed to record_resume
came from "currently_stepping", so you should be able
to use that.

Something close to the patch that Pedro posted should work...




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]