Re: gdb reverse execution: how to actually run tests for it?

Hui Zhu
2009-08-17T07:58:47Z

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"

It just test reverse and prec target. If you want test reverse with
other target, I think you need change follow code in .exp:
runto main

if [target_info exists gdb,use_precord] {
# Activate process record/replay
gdb_test "record" "" "Turn on process record"
# FIXME: command ought to acknowledge, so we can test if it succeeded.
}

Thanks,
Hui

On Mon, Aug 17, 2009 at 15:42, Jakob Engblom<jakob@virtutech.com> wrote:
> I am trying to finally implement the reverse ability for MI commands, but
> creating and testing the tests is looking challenging. The fundamental issue is
> that it seems that I cannot get the regular reverse tests to run, to know how to
> properly code the reverse tests for reverse MI.
>
> When I run
>
> $ make check RUNTESTFLAGS="gdb.reverse/*.exp"
>
> There is a flurry of activity ending in this:
>
> ---
>                === gdb tests ===
>
> Schedule of variations:
>    unix
>
> Running target unix
> Using /usr/share/dejagnu/baseboards/unix.exp as board description file for
> target.
> Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
> Using ../../../src/gdb/testsuite/config/unix.exp as tool-and-target-specific
> interface file.
> Running ../../../src/gdb/testsuite/gdb.reverse/solib-reverse.exp ...
> Running ../../../src/gdb/testsuite/gdb.reverse/step-reverse.exp ...
> Running ../../../src/gdb/testsuite/gdb.reverse/until-reverse.exp ...
> Running ../../../src/gdb/testsuite/gdb.reverse/break-reverse.exp ...
> Running ../../../src/gdb/testsuite/gdb.reverse/finish-reverse.exp ...
> Running ../../../src/gdb/testsuite/gdb.reverse/machinestate.exp ...
> Running ../../../src/gdb/testsuite/gdb.reverse/consecutive-reverse.exp ...
> Running ../../../src/gdb/testsuite/gdb.reverse/watch-reverse.exp ...
>
>                === gdb Summary ===
>
> /home/jakob/gdb7/gdb-host-revpatched/gdb/testsuite/../../gdb/gdb version
> 6.8.50.20090814-cvs -nw -nx
>
> make[3]: Leaving directory `/home/jakob/gdb7/gdb-host-revpatched/gdb/testsuite'
> make[2]: Leaving directory `/home/jakob/gdb7/gdb-host-revpatched/gdb'
> make[1]: Nothing to be done for `check-target'.
> make[1]: Leaving directory `/home/jakob/gdb7/gdb-host-revpatched'
> ---
>
> Which seems to indicate that no tests were actually run. This is a 6.8.50 branch
> that I checked out of cvs late last week.
>
> What is required to actually run the reverse tests? Do I need to build my gdb in
> any special way?
>
> I suspect that this line the test scripts is the cause of the premature exit
> from the tests:
>
> ---
> if ![target_info exists gdb,can_reverse] {
>    return
> }
> ---
>
> So how do I make gdb realize that it can indeed reverse itself?
>
> Best regards,
>
> /jakob
>
> _______________________________________________________
>
> Jakob Engblom, PhD, Technical Marketing Manager
>
> Virtutech                   Direct: +46 8 690 07 47
> Drottningholmsvägen 22      Mobile: +46 709 242 646
> 11243 Stockholm             Web:    www.virtutech.com
> Sweden
> ________________________________________________________
>
>
>
>