File: remove_function_from_trace.pl

package info (click to toggle)
mariadb-10.0 10.0.16-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 416,512 kB
  • sloc: cpp: 1,351,103; ansic: 803,086; perl: 59,621; pascal: 32,136; sh: 25,156; yacc: 14,897; xml: 5,194; sql: 4,651; cs: 4,647; makefile: 4,113; python: 2,526; ruby: 2,496; lex: 1,427; asm: 295; awk: 54; php: 22; sed: 16
file content (25 lines) | stat: -rwxr-xr-x 664 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/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);

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;
}