diff options
author | Sergei Golubchik <serg@mariadb.org> | 2021-01-26 11:56:17 +0100 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2021-02-22 19:43:08 +0100 |
commit | 77c23c62ae28611f660ea4a8b25525c3cfe2871f (patch) | |
tree | da04c26761223b3e7d535f652aac699f8ce7550d | |
parent | feacc0aaf2860a391f0febbc11e42f1d09598705 (diff) | |
download | mariadb-git-77c23c62ae28611f660ea4a8b25525c3cfe2871f.tar.gz |
support for mtr --valgdb
add a new "debugger" to mtr, that runs the executable
under valgrind in gdb. valgrind pid is auto-detected,
but the delay (sleep) and vgdb path are hard-coded for now
-rw-r--r-- | mysql-test/lib/My/Debugger.pm | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/mysql-test/lib/My/Debugger.pm b/mysql-test/lib/My/Debugger.pm index 700124ec3cb..f6aa41269cb 100644 --- a/mysql-test/lib/My/Debugger.pm +++ b/mysql-test/lib/My/Debugger.pm @@ -79,6 +79,22 @@ my %debuggers = ( if ::mtr_grab_file('/proc/sys/kernel/perf_event_paranoid') > 1; } }, + valgdb => { + term => 1, + run => 'gdb', + options => '-x {script} {exe}', + script => <<EEE, +py +import subprocess,shlex,time +valg=subprocess.Popen(shlex.split("""valgrind --tool=memcheck --show-reachable=yes --leak-check=yes --num-callers=16 --quiet --suppressions=valgrind.supp --vgdb-error=0 {exe} {args} --loose-wait-for-pos-timeout=1500""")) +time.sleep(2) +gdb.execute("target remote | /usr/lib64/valgrind/../../bin/vgdb --pid=" + str(valg.pid)) +EEE + pre => sub { + my $debug_libraries_path= "/usr/lib/debug"; + $ENV{LD_LIBRARY_PATH} .= ":$debug_libraries_path" if -d $debug_libraries_path; + } + }, # aliases vsjitdebugger => 'windbg', @@ -147,16 +163,17 @@ sub do_args($$$$$) { my $options = subst($v->{options}, %vars); @$$args = map { unquote_for_mtr $_ } $options =~ /("[^"]+"|\S+)/g; + my $run = $v->{run} || $k; if ($opt =~ /^manual-/) { print "\nTo start $k for $type, type in another window:\n"; - print "$k $options\n"; + print "$run $options\n"; $$exe= undef; # Indicate the exe should not be started } elsif ($v->{term}) { - unshift @$$args, '-title', $type, '-e', $k; + unshift @$$args, '-title', $type, '-e', $run; $$exe = 'xterm'; } else { - $$exe = $k; + $$exe = $run; } } |