2008-03-02 23:24:55 -08:00
|
|
|
#!/usr/bin/perl -w
|
|
|
|
#
|
2012-05-21 04:12:37 -07:00
|
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
2008-03-02 23:24:55 -08:00
|
|
|
|
|
|
|
# Filter a refcount log to show only the entries for a single object.
|
|
|
|
# Useful when manually examining refcount logs containing multiple
|
|
|
|
# objects.
|
|
|
|
|
|
|
|
use 5.004;
|
|
|
|
use strict;
|
|
|
|
use Getopt::Long;
|
|
|
|
|
|
|
|
GetOptions("object=s");
|
|
|
|
|
|
|
|
$::opt_object ||
|
|
|
|
die qq{
|
|
|
|
usage: filter-log-for.pl < logfile
|
|
|
|
--object <obj> The address of the object to examine (required)
|
|
|
|
};
|
|
|
|
|
|
|
|
warn "object $::opt_object\n";
|
|
|
|
|
|
|
|
LINE: while (<>) {
|
|
|
|
next LINE if (! /^</);
|
|
|
|
my $line = $_;
|
|
|
|
my @fields = split(/ /, $_);
|
|
|
|
|
|
|
|
my $class = shift(@fields);
|
|
|
|
my $obj = shift(@fields);
|
|
|
|
next LINE unless ($obj eq $::opt_object);
|
|
|
|
my $sno = shift(@fields);
|
|
|
|
my $op = shift(@fields);
|
|
|
|
my $cnt = shift(@fields);
|
|
|
|
|
|
|
|
print $line;
|
|
|
|
|
|
|
|
# The lines in the stack trace
|
|
|
|
CALLSITE: while (<>) {
|
|
|
|
print;
|
|
|
|
last CALLSITE if (/^$/);
|
|
|
|
}
|
|
|
|
}
|