=head1 VERSION
-Version 1.00
+Version 1.01
=cut
-our $VERSION = '1.00';
+our $VERSION = '1.01';
=head1 SYNOPSIS
=head2 C<import [ %options ]>
-In the parent process, L</import> calls L</analyse> with the arguments it received itself - except that if no C<file> option was supplied, it tries to pick the highest caller context that looks like a script.
-When the analyse finishes, it exists with the status that was returned.
+In the parent process, L</import> calls L</analyse> with the arguments it received itself - except that if no C<file> option was supplied, it tries to pick the first caller context that looks like a script.
+When the analyse ends, it exits with the status that was returned.
In the child process, it just C<return>s so that the calling code is actually run under C<valgrind>.
});
}
+=head1 VARIABLES
+
+=head2 C<$dl_unload>
+
+When set to true, all dynamic extensions that were loaded during the analysis will be unloaded at C<END> time by L<DynaLoader/dl_unload_file>.
+
+Since this obfuscates error stack traces, it's disabled by default.
+
+=cut
+
+our $dl_unload;
+
END {
- if ($run and eval { require DynaLoader; 1 }) {
+ if ($dl_unload and $run and eval { require DynaLoader; 1 }) {
my @rest;
DynaLoader::dl_unload_file($_) or push @rest, $_ for @DynaLoader::dl_librefs;
@DynaLoader::dl_librefs = @rest;