Files
oceanbase/deps/oblib/unittest/lib/alloc/alloc_trace_pre.pl
wangzelin.wzl 93a1074b0c patch 4.0
2022-10-24 17:57:12 +08:00

44 lines
766 B
Perl
Executable File

#!/usr/bin/perl -w
use vars qw(%free_ptrs_map);
use 5.010;
open my $fh, "<", "observer.log"
or die "Can't read trace log";
my @free_ptrs;
while (<$fh>) {
chomp;
if (/free.*ptr=(0x[0-9a-f]+).*/i) {
my $ptr = $1;
push @free_ptrs, $ptr;
}
}
for (my $idx = 0; $idx < @free_ptrs; $idx++) {
$free_ptrs_map{$free_ptrs[$idx]} = $idx;
}
# rewind to begin
seek $fh, 0, 0;
while (<$fh>) {
chomp;
if (/alloc.*size=([0-9]+).*ptr=(0x[0-9a-f]+).*/i) {
my $size = $1;
my $ptr = $2;
my $idx = $free_ptrs_map{$ptr};
if (defined $idx) {
say "1 $idx $size";
} else {
say "1 -1 $size";
}
} elsif (/free.*ptr=(0x[0-9a-f]+).*/i) {
my $ptr = $1;
my $idx = $free_ptrs_map{$ptr};
say "2 $idx";
}
}
close $fh;