summaryrefslogtreecommitdiffstats
path: root/dbug/remove_function_from_trace.pl
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 12:24:36 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 12:24:36 +0000
commit06eaf7232e9a920468c0f8d74dcf2fe8b555501c (patch)
treee2c7b5777f728320e5b5542b6213fd3591ba51e2 /dbug/remove_function_from_trace.pl
parentInitial commit. (diff)
downloadmariadb-06eaf7232e9a920468c0f8d74dcf2fe8b555501c.tar.xz
mariadb-06eaf7232e9a920468c0f8d74dcf2fe8b555501c.zip
Adding upstream version 1:10.11.6.upstream/1%10.11.6
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dbug/remove_function_from_trace.pl')
-rwxr-xr-xdbug/remove_function_from_trace.pl25
1 files changed, 25 insertions, 0 deletions
diff --git a/dbug/remove_function_from_trace.pl b/dbug/remove_function_from_trace.pl
new file mode 100755
index 00000000..67d7fa54
--- /dev/null
+++ b/dbug/remove_function_from_trace.pl
@@ -0,0 +1,25 @@
+#!/usr/bin/env perl
+
+die <<EEE unless @ARGV;
+Usage: $0 func1 [func2 [ ...] ]
+
+This filter (stdin->stdout) removes lines from dbug trace that were generated
+by specified functions and all functions down the call stack. Produces the
+same effect as if the original source had DBUG_PUSH(""); right after
+DBUG_ENTER() and DBUG_POP(); right before DBUG_RETURN in every such a function.
+EEE
+
+$re=join('|', @ARGV);
+
+while(<STDIN>) {
+ ($thd) = /^(T@\d+)/;
+ print unless $skip{$thd};
+ next unless /^(?:.*: )*((?:\| )*)([<>])($re)\n/o;
+ if ($2 eq '>') {
+ $skip{$thd}=$1.$3 unless $skip{$thd};
+ next;
+ }
+ next if $skip{$thd} ne $1.$3;
+ delete $skip{$thd};
+ print;
+}