There are two modes of reversible debugging: remote and native. Remote support should be working fine, for stubs that support it.

To use the testsuite of reverse:

cat /usr/share/dejagnu/baseboards/precord.exp
# Testing programs using process record/replay (precord)
load_base_board_description "unix"
set_board_info gdb,can_reverse 1
set_board_info gdb,use_precord 1

make check RUNTESTFLAGS="break-reverse.exp --target_board=precord" && make check RUNTESTFLAGS="consecutive-reverse.exp --target_board=precord" && make check RUNTESTFLAGS="finish-reverse.exp --target_board=precord" && make check RUNTESTFLAGS="machinestate.exp --target_board=precord" && make check RUNTESTFLAGS="solib-reverse.exp --target_board=precord" && make check RUNTESTFLAGS="step-reverse.exp --target_board=precord" && make check RUNTESTFLAGS="until-reverse.exp --target_board=precord" && make check RUNTESTFLAGS="watch-reverse.exp --target_board=precord"

For native targets, the functionality is handled by the record and replay subsystem. As of now, it is still incomplete and at an "early days" stage. The following aspects need to be fixed/implemented:

  1. Support i386 more better. Now, precord doesn't support mmx insns, support fp insns not very well and doesn't support a lot of insns.

    http://sourceware.org/ml/gdb-patches/2009-07/msg00156.html this patch make prec support i386 fp insn more better.

  2. Support more architectures (Now, we support i386, AMD64 and moxie). MIPS, ARM and so on.
  3. Support memory free better. Now, precord just can output a warning for memumap. It can do nothing when there is a sys_brk to free the memory. I had make a patch to output a warning when there is a sys_brk to free the memory and make a plan to make precord can support free memory. I will keep work on it.http://sourceware.org/ml/gdb-patches/2009-05/msg00078.html This patch will make linux-record can check if the sys_brk will release the memory or not. If memory will be released, gdb will query to user. It is in discussion.

  4. Support multi-thread and multi-inferior. I remember Pedro make a patch for reverse debug resume. I think we need this patch when multi-inferior check in.
  5. Make record speed up and need less memory. I have made a plan to make p record doesn't record execution log of some functions (It can set), for example some functions in glibc.

    These patches add record skip function: http://sourceware.org/ml/gdb-patches/2009-08/msg00302.html http://sourceware.org/ml/gdb-patches/2009-08/msg00303.html http://sourceware.org/ml/gdb-patches/2009-08/msg00304.html http://sourceware.org/ml/gdb-patches/2009-08/msg00305.html http://sourceware.org/ml/gdb-patches/2009-08/msg00306.html http://sourceware.org/ml/gdb-patches/2009-08/msg00307.html http://sourceware.org/ml/gdb-patches/2009-08/msg00308.html

  6. Make execution log can dump out to be a file and can replay for next time.

    http://sourceware.org/ml/gdb-patches/2009-08/msg00002.html This patch make prec can dump and load execution log. It can make together with coredump support. http://sourceware.org/ml/gdb/2009-06/msg00104.html This is some idea of this function.

  7. Make document more better. The following is from Eli: What I think is still missing from the manual is a few sentences that would explain when this target is useful. Can you provide such warstories? I will then add them to the manual. No, I mean description of when this target is useful in real life, and how you will use it. In other words, put yourself in a place of someone who reads the manual about the record/replay target and asks him/herself "why should I care about this new feature?" Then try to answer that question. And try to answer it so that the reader will wonder how could she ever get by without this feature before. Marc wrote something for it in http://sourceware.org/ml/gdb-patches/2009-05/msg00058.html .

  8. Add more testsuite for process record.

None: ReversibleDebugging (last edited 2009-08-28 08:53:21 by teawater)

All content (C) 2008 Free Software Foundation. For terms of use, redistribution, and modification, please see the WikiLicense page.