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: RFA: valgrind -vs- the testsuite


On Thu, Jul 9, 2009 at 10:19 AM, Tom Tromey<tromey@redhat.com> wrote:
> I've often found it useful to run gdb under valgrind in the
> testsuite. ?I keep this patch around to make this very easy; but I
> figured I'd submit this in case other people find it useful.
>
> With this patch you can set a dejagnu variable and have each gdb
> invocation in the test suite automatically run using valgrind. ?The
> valgrind output is sent to a separate file per gdb invocation, so it
> doesn't mess up the test suite results.
>
> This needs a documentation review.
>
> Tom
>
> 2009-07-09 ?Tom Tromey ?<tromey@redhat.com>
>
> ? ? ? ?* gdbint.texinfo (Testsuite): Document valgrind usage.
>
> 2009-07-09 ?Tom Tromey ?<tromey@redhat.com>
>
> ? ? ? ?* lib/gdb.exp: Recognize VALGRIND variable.
>
> diff --git a/gdb/doc/gdbint.texinfo b/gdb/doc/gdbint.texinfo
> index a51f077..e15af88 100644
> --- a/gdb/doc/gdbint.texinfo
> +++ b/gdb/doc/gdbint.texinfo
> @@ -7560,6 +7560,19 @@ will give a result of ``UNRESOLVED'', like this:
> ?UNRESOLVED: gdb.base/example.exp: This test script does not work on a remote host.
> ?@end smallexample
>
> +You can instruct the testsuite to run @value{GDBN} under
> +@code{valgrind}. ?You can do this by setting the DejaGNU variable
> +@code{VALGRIND} on the @code{runtest} command line. ?The testsuite
> +will use the contents of this variable as arguments to pass to
> +@code{valgrind}. ?The testsuite also automatically adds a
> +@code{--log-file} option to put the logs in files named
> +@file{valgrind.@var{pid}} in DejaGNU's output directory. ?Here,
> +@var{pid} is the process id of the @value{GDBN} process.
> +
> +@smallexample
> +make check RUNTESTFLAGS='VALGRIND=--leak-check=full'
> +@end smallexample
> +
> ?@section Testsuite Organization
>
> ?@cindex test suite organization
> diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
> index 200ab35..25ccacb 100644
> --- a/gdb/testsuite/lib/gdb.exp
> +++ b/gdb/testsuite/lib/gdb.exp
> @@ -42,6 +42,13 @@ if ![info exists GDB] {
> ?}
> ?verbose "using GDB = $GDB" 2
>
> +# If VALGRIND is set, we run gdb under valgrind and use $VALGRIND as
> +# arguments to valgrind.
> +if {[info exists VALGRIND]} {
> + ?global outdir
> + ?set GDB "valgrind $VALGRIND --log-file=$outdir/valgrind.%p $GDB"
> +}
> +
> ?# GDBFLAGS is available for the user to set on the command line.
> ?# E.g. make check RUNTESTFLAGS=GDBFLAGS=mumble
> ?# Testcases may use it to add additional flags, but they must:
>


I always just use:
cd testsuite && runtest --tool gdb GDB="valgrind ../gdb"
or make check RUNTESTFLAGS='"valgrind ../gdb"'
(suitably augmented as desired),

[not that I'm complaining about the option, valgrind is used often enough]


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