1 #!/usr/bin/perl 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 3 # Use of this source code is governed by a BSD-style license that can be 4 # found in the LICENSE file. 5 6 sub process_raw($$) { 7 my $file = shift; 8 my $search = shift; 9 10 my %leaks = (); 11 12 my $save = 0; 13 my $print = 0; 14 my $bytes = 0; 15 my $calls = 0; 16 my $sum_bytes = 0; 17 my $sum_calls = 0; 18 19 open (LOGFILE, "$file") or die("could not open $file"); 20 while(<LOGFILE>) { 21 my $line = $_; 22 if ($line =~ m/([0-9]*) bytes, ([0-9]*) allocs/) { 23 $save = ""; 24 $print = 0; 25 $bytes = $1; 26 $calls = $2; 27 } 28 elsif ($line =~ m/$search/) { 29 $print = 1; 30 } 31 elsif ($line =~ m/=============/) { 32 $save .= $line; 33 if ($print) { 34 print "$bytes bytes ($calls calls)\n"; 35 print $save; 36 $sum_bytes += $bytes; 37 $sum_calls += $calls; 38 $save = ""; 39 $print = 0; 40 $calls = 0; 41 } 42 } 43 $save .= $line; 44 } 45 print("TOTAL: $sum_bytes bytes ($sum_calls calls)\n"); 46 } 47 48 49 # ----- Main ------------------------------------------------ 50 51 # Get the command line argument 52 my $filename = shift; 53 my $search = shift; 54 55 # Process the file. 56 process_raw($filename, $search); 57