diff --git a/configure b/configure
index f646d55885abacf20d100cbf8350987a32bf5a3f..ed0009af3e34c0edfc9edadfc66008a09763dd72 100755
--- a/configure
+++ b/configure
@@ -2504,6 +2504,10 @@ case "$toolchain" in
         add_cflags  -fsanitize=thread -pie
         add_ldflags -fsanitize=thread -pie
     ;;
+    valgrind-memcheck)
+        target_exec_default="valgrind"
+        target_exec_args="--track-origins=yes --leak-check=full"
+    ;;
     msvc)
         cc_default="c99wrap cl"
         ld_default="c99wrap link"
@@ -2520,7 +2524,7 @@ case "$toolchain" in
     ;;
 esac
 
-set_default arch cc cxx pkg_config strip sysinclude target_os yasmexe
+set_default arch cc cxx pkg_config strip sysinclude target_exec target_os yasmexe
 enabled cross_compile || host_cc_default=$cc
 set_default host_cc
 
@@ -4550,7 +4554,7 @@ HOSTCC_DEPFLAGS=$HOSTCC_DEPFLAGS
 HOSTCC_C=$HOSTCC_C
 HOSTCC_O=$HOSTCC_O
 HOSTLD_O=$HOSTLD_O
-TARGET_EXEC=$target_exec
+TARGET_EXEC=$target_exec $target_exec_args
 TARGET_PATH=$target_path
 LIBS-ffplay=$sdl_libs
 CFLAGS-ffplay=$sdl_cflags
diff --git a/doc/developer.texi b/doc/developer.texi
index d5580d154374b7abdb5d62652df361e9ff3b6e7f..90885eeaaa8d4f66bddd8b041765cf13e25bf76b 100644
--- a/doc/developer.texi
+++ b/doc/developer.texi
@@ -604,6 +604,18 @@ You can use the command @code{make lcov-reset} to reset the coverage
 measurements. You will need to rerun @code{make lcov} after running a
 new test.
 
+@subsection Using Valgrind
+
+The configure script provides a shortcut for using valgrind to spot bugs
+related to memory handling. Just add the option
+@code{--toolchain=valgrind-memcheck} to your configure line, and
+reasonable defaults will be set for running FATE under the supervision
+of the @strong{memcheck} tool of the valgrind suite.
+
+In case you need finer control over how valgrind is invoked, use the
+@code{--target-exec='valgrind <your_custom_valgrind_options>} option in
+your configure line instead.
+
 @anchor{Release process}
 @section Release process