summaryrefslogtreecommitdiff
path: root/dbug/remove_function_from_trace.pl
diff options
context:
space:
mode:
authorunknown <serg@janus.mylan>2007-12-30 19:47:36 +0100
committerunknown <serg@janus.mylan>2007-12-30 19:47:36 +0100
commitf21390874d1325bd829edc952501eb4381ed8732 (patch)
tree6ca95402b21467f0b2b0f2a9b3303898b8637deb /dbug/remove_function_from_trace.pl
parenta50f1641f5a5be326bfc5010d390402ab7dfd061 (diff)
downloadmariadb-git-f21390874d1325bd829edc952501eb4381ed8732.tar.gz
dbug/remove_function_from_trace.pl
dbug/remove_function_from_trace.pl: New BitKeeper file ``dbug/remove_function_from_trace.pl''
Diffstat (limited to 'dbug/remove_function_from_trace.pl')
-rwxr-xr-xdbug/remove_function_from_trace.pl26
1 files changed, 26 insertions, 0 deletions
diff --git a/dbug/remove_function_from_trace.pl b/dbug/remove_function_from_trace.pl
new file mode 100755
index 00000000000..1da9e25f9ba
--- /dev/null
+++ b/dbug/remove_function_from_trace.pl
@@ -0,0 +1,26 @@
+#!/usr/bin/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);
+$skip='';
+
+while(<STDIN>) {
+ print unless $skip;
+ next unless /^(?:.*: )*((?:\| )*)([<>])($re)\n/o;
+ if ($2 eq '>') {
+ $skip=$1.$3 unless $skip;
+ next;
+ }
+ next if $skip ne $1.$3;
+ $skip='';
+ print;
+}